DdeInitialize功能使用动态数据交换管理库(DDEML)注册应用程序。调用任何其他DDEML函数之前,应用程序必须调用此函数。
UINT DdeInitialize(
LPDWORD 【pidInst】, | //指向实例标识符的指针 |
PFNCALLBACK 【窗口的宽度或高度。】, | //指向回调函数的指针 |
DWORD 【afCmd】, | //设置命令和过滤器标志 |
DWORD 【ulRes】 | //保留 |
); |
参数
【pidInst】
指向应用程序实例标识符。初始化时,该参数应指向0。如果函数成功,则该参数指向应用程序的实例标识符。该值应该在需要它的所有其他DDEML函数中作为【idInst】参数传递。如果应用程序使用DDEML动态链接库(DLL)的多个实例,则应用程序应为每个实例提供不同的回调函数。
如果【pidInst】指向非零值,则暗示重新初始化DDEML。在这种情况下,【pidInst】必须指向一个有效的应用程序实例标识符。
【窗口的宽度或高度。】
指向应用程序定义的动态数据交换(DDE)回调函数。此函数处理系统发送的DDE事务。有关详细信息,请参阅DdeCallback 回调函数。
【afCmd】
指定一组APPCMD_,CBF_和MF_标志。APPCMD_标志提供了DdeInitialize的特殊说明。CBF_标志指定阻止特定类型的事务到达回调函数的过滤器。MF_标志指定DDE监视应用程序监视的DDE活动的类型。使用这些标志通过消除对回调函数的不必要的调用来增强DDE应用程序的性能。
此参数可以是以下过滤器标志的组合:
旗 | 含义 |
APPCLASS_MONITOR | 使应用程序可以监控系统中的DDE活动。该标志由DDE监控应用程序使用。应用程序通过将一个或多个监视器标志与APPCLASS_MONITOR标志组合来指定要监视的DDE活动的类型。有关详细信息,请参阅以下备注部分。 |
APPCLASS_STANDARD | 将应用程序注册为标准(非监视)DDEML应用程序。 |
APPCMD_CLIENTONLY | 防止应用程序成为DDE会话中的服务器。该应用程序只能是一个客户端。该标志减少DDEML的资源消耗。它包括CBF_FAIL_ALLSVRXACTIONS标志的功能。 |
APPCMD_FILTERINITS | 防止DDEML向应用程序发送XTYP_CONNECT和XTYP_WILDCONNECT事务,直到应用程序创建其字符串句柄并注册其服务名称,或者通过后续调用DdeNameService或DdeInitialize函数关闭过滤。当应用程序首次调用DdeInitialize时,无论应用程序是否指定标志,该标志始终有效。在对DdeInitialize的后续调用中,不指定此标志会关闭应用程序的服务名称过滤器,但指定它将打开应用程序的服务名称过滤器。 |
CBF_FAIL_ALLSVRXACTIONS | 阻止回调函数接收服务器事务。系统将DDE_FNOTPROCESSED返回给向此应用程序发送事务的每个客户端。该标志相当于组合所有CBF_FAIL_标志。 |
CBF_FAIL_ADVISES | 阻止回调函数接收XTYP_ADVSTART和XTYP_ADVSTOP事务。系统将DDE_FNOTPROCESSED返回给向服务器发送XTYP_ADVSTART或XTYP_ADVSTOP事务的每个客户端。 |
CBF_FAIL_CONNECTIONS | 阻止回调函数接收XTYP_CONNECT和XTYP_WILDCONNECT事务。 |
CBF_FAIL_EXECUTES | 阻止回调函数接收XTYP_EXECUTE事务。系统将DDE_FNOTPROCESSED返回给向服务器发送XTYP_EXECUTE事务的客户端。 |
CBF_FAIL_POKES | 阻止回调函数接收XTYP_POKE事务。系统将DDE_FNOTPROCESSED返回给向服务器发送XTYP_POKE事务的客户端。 |
CBF_FAIL_REQUESTS | 阻止回调函数接收XTYP_REQUEST事务。系统将DDE_FNOTPROCESSED返回给向服务器发送XTYP_REQUEST事务的客户端。 |
CBF_FAIL_SELFCONNECTIONS | 防止回调函数从应用程序自己的实例接收XTYP_CONNECT事务。此标志阻止应用程序与自己的实例建立DDE对话。如果应用程序需要与自己的其他实例进行通信,而不是与其自身进行通信,应该使用此标志。 |
CBF_SKIP_ALLNOTIFICATIONS | 阻止回调函数接收任何通知。该标志相当于组合所有CBF_SKIP_标志。 |
CBF_SKIP_CONNECT_CONFIRMS | 阻止回调函数接收XTYP_CONNECT_CONFIRM通知。 |
CBF_SKIP_DISCONNECTS | 阻止回调函数接收XTYP_DISCONNECT通知。 |
CBF_SKIP_REGISTRATIONS | 阻止回调功能接收XTYP_REGISTER通知。 |
CBF_SKIP_UNREGISTRATIONS | 阻止回调功能接收XTYP_UNREGISTER通知。 |
MF_CALLBACKS | 当事务发送到系统中的任何DDE回调函数时通知回调函数。 |
MF_CONV | 通话建立或终止时通知回调功能。 |
MF_ERRORS | 当发生DDE错误时通知回调函数。 |
MF_HSZ_INFO | 每当DDE应用程序创建,释放或增加字符串句柄的使用次数或每当调用DdeUninitialize函数的结果释放字符串句柄时,都会通知回调函数。 |
MF_LINKS | 每当建议循环启动或结束时通知回调函数。 |
MF_POSTMSGS | 系统或应用程序发布DDE消息时通知回调函数。 |
MF_SENDMSGS | 系统或应用程序发送DDE消息时通知回调函数。 |
【ulRes】
Reserved; must be set to zero.
返回值
如果函数成功,则返回值为DMLERR_NO_ERROR。
如果函数失败,则返回值为以下值之一:
DMLERR_DLL_USAGE
DMLERR_INVALIDPARAMETER
DMLERR_SYS_ERROR
备注
使用DDEML的多个实例的应用程序不得在实例之间传递DDEML对象。
DDE监视应用程序不应尝试在同一应用程序实例的上下文中执行DDE操作(建立对话,发出事务等)。
如果同一任务的任何实例具有同步事务已在进行中,则同步事务将失败,并显示DMLERR_REENTRANCY错误。
CBF_FAIL_ALLSVRACTIONS标志使DDEML过滤所有服务器事务,并可以随后调用DdeInitialize进行更改。APPCMD_CLIENTONLY标志防止DDEML为服务器创建密钥资源,不能随后调用DdeInitialize进行更改。
有一个ANSI版本和一个Unicode版本的DdeInitialize.调用的版本决定了用于控制DDE会话(ANSI或Unicode)的窗口过程的类型以及CONVCONTXT结构(CP_WINANSI或CP_WINUNICODE)的iCodePage成员的默认值。
也可以看看
DdeClientTransaction, DdeConnect, DdeCreateDataHandle, DdeEnableCallback, DdeNameService, DdePostAdvise, DdeUninitialize XTYP_ADVSTART, XTYP_ADVSTOP, XTYP_CONNECT, XTYP_CONNECT_CONFIRM, XTYP_DISCONNECT, XTYP_EXECUTE, XTYP_POKE, XTYP_REGISTER, XTYP_REQUEST, XTYP_WILDCONNECT