DdeInitialize

【勇芳软件工作室】汉化HomePreviousNext

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事务,直到应用程序创建其字符串句柄并注册其服务名称,或者通过后续调用DdeNameServiceDdeInitialize函数关闭过滤。当应用程序首次调用DdeInitialize时,无论应用程序是否指定标志,该标志始终有效。在对DdeInitialize的后续调用中,不指定此标志会关闭应用程序的服务名称过滤器,但指定它将打开应用程序的服务名称过滤器。
CBF_FAIL_ALLSVRXACTIONS阻止回调函数接收服务器事务。系统将DDE_FNOTPROCESSED返回给向此应用程序发送事务的每个客户端。该标志相当于组合所有CBF_FAIL_标志。
CBF_FAIL_ADVISES阻止回调函数接收XTYP_ADVSTARTXTYP_ADVSTOP事务。系统将DDE_FNOTPROCESSED返回给向服务器发送XTYP_ADVSTART或XTYP_ADVSTOP事务的每个客户端。
CBF_FAIL_CONNECTIONS阻止回调函数接收XTYP_CONNECTXTYP_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