DdeInitializeW 函数 (ddeml.h)

动态 Data Exchange 管理库(DDEML)注册应用程序。 应用程序必须在调用任何其他动态数据交换管理库 (DDEML) 函数之前调用此函数。

语法

UINT DdeInitializeW(
  [in, out] LPDWORD     pidInst,
  [in]      PFNCALLBACK pfnCallback,
  [in]      DWORD       afCmd,
            DWORD       ulRes
);

参数

[in, out] pidInst

类型:LPDWORD

应用程序实例标识符。 在初始化时,此参数应指向 0。 如果函数成功,此参数指向应用程序的实例标识符。 此值应作为 idInst 参数传递到所有其他需要它的 DDEML 函数中。 如果应用程序使用 DDEML 动态链接库(DLL)的多个实例,则应用程序应为每个实例提供不同的回调函数。

如果 pidInst 指向非零值,则隐式重新初始化 DDEML。 在这种情况下,pidInst 必须指向有效的应用程序实例标识符。

[in] pfnCallback

类型:PFNCALLBACK

指向应用程序定义的 DDE 回调函数的指针。 此函数处理系统发送的 DDE 事务。 有关详细信息,请参阅 DdeCallback 回调函数。

[in] afCmd

类型:DWORD

一组 APPCMD_CBF_MF_ 标志。 APPCMD_ 标志提供 DdeInitialize的特殊说明。 CBF_ 标志指定了阻止特定类型的事务到达回调函数的筛选器。 MF_ 标志指定 DDE 监视应用程序监视的 DDE 活动的类型。 使用这些标志可以通过消除对回调函数的不必要的调用来提高 DDE 应用程序的性能。

此参数可以是以下一个或多个值。

价值 意义
APPCLASS_MONITOR
0x00000001L
使应用程序能够监视系统中的 DDE 活动。 此标志供 DDE 监视应用程序使用。 应用程序通过将一个或多个监视器标志与 APPCLASS_MONITOR 标志组合在一起,指定要监视的 DDE 活动的类型。 有关详细信息,请参阅以下“备注”部分。
APPCLASS_STANDARD
0x00000000L
将应用程序注册为标准 (非监视) DDEML 应用程序。
APPCMD_CLIENTONLY
0x00000010L
阻止应用程序成为 DDE 会话中的服务器。 应用程序只能是客户端。 此标志可减少 DDEML 的资源消耗。 它包括 CBF_FAIL_ALLSVRXACTIONS 标志的功能。
APPCMD_FILTERINITS
0x00000020L
阻止 DDEML 向应用程序发送 XTYP_CONNECTXTYP_WILDCONNECT 事务,直到应用程序创建其字符串句柄并注册其服务名称,或者通过后续调用 DdeNameServiceDdeInitialize 函数关闭筛选。 当应用程序首次调用 DdeInitialize 时,无论应用程序是否指定标志,此标志始终有效。 在后续调用 DdeInitialize时,不指定此标志会关闭应用程序的服务名称筛选器,但指定它会打开应用程序的服务名称筛选器。
CBF_FAIL_ALLSVRXACTIONS
0x0003f000
阻止回调函数接收服务器事务。 系统将 DDE_FNOTPROCESSED 发送到向此应用程序发送事务的每个客户端。 此标志等效于合并所有CBF_FAIL_标志。
CBF_FAIL_ADVISES
0x00004000
防止回调函数接收 XTYP_ADVSTARTXTYP_ADVSTOP 事务。 系统将 DDE_FNOTPROCESSED 返回到向服务器发送 XTYP_ADVSTARTXTYP_ADVSTOP 事务的每个客户端。
CBF_FAIL_CONNECTIONS
0x00002000
阻止回调函数接收 XTYP_CONNECTXTYP_WILDCONNECT 事务。
CBF_FAIL_EXECUTES
0x00008000
阻止回调函数接收 XTYP_EXECUTE 事务。 系统将 DDE_FNOTPROCESSED 返回到向服务器发送 XTYP_EXECUTE 事务的客户端。
CBF_FAIL_POKES
0x00010000
阻止回调函数接收 XTYP_POKE 事务。 系统将 DDE_FNOTPROCESSED 返回到向服务器发送 XTYP_POKE 事务的客户端。
CBF_FAIL_REQUESTS
0x00020000
阻止回调函数接收 XTYP_REQUEST 事务。 系统将 DDE_FNOTPROCESSED 返回到向服务器发送 XTYP_REQUEST 事务的客户端。
CBF_FAIL_SELFCONNECTIONS
0x00001000
阻止回调函数从应用程序自己的实例接收 XTYP_CONNECT 事务。 此标志可防止应用程序与其自己的实例建立 DDE 对话。 如果应用程序需要与其自身的其他实例通信,但与其本身通信,则应用程序应使用此标志。
CBF_SKIP_ALLNOTIFICATIONS
0x003c0000
阻止回调函数接收任何通知。 此标志等效于合并所有CBF_SKIP_标志。
CBF_SKIP_CONNECT_CONFIRMS
0x00040000
阻止回调函数接收 XTYP_CONNECT_CONFIRM 通知。
CBF_SKIP_DISCONNECTS
0x00200000
阻止回调函数接收 XTYP_DISCONNECT 通知。
CBF_SKIP_REGISTRATIONS
0x00080000
阻止回调函数接收 XTYP_REGISTER 通知。
CBF_SKIP_UNREGISTRATIONS
0x00100000
阻止回调函数接收 XTYP_UNREGISTER 通知。
MF_CALLBACKS
0x08000000
每当事务发送到系统中的任何 DDE 回调函数时,通知回调函数。
MF_CONV
0x40000000
每当建立或终止会话时通知回调函数。
MF_ERRORS
0x10000000
每当发生 DDE 错误时通知回调函数。
MF_HSZ_INFO
0x01000000
每当 DDE 应用程序创建、释放或递增字符串句柄的使用计数或每当由于调用 DdeUninitialize 函数而释放字符串句柄时,就会通知回调函数。
MF_LINKS
0x20000000
每当建议循环启动或结束时,通知回调函数。
MF_POSTMSGS
0x04000000
每当系统或应用程序发布 DDE 消息时,通知回调函数。
MF_SENDMSGS
0x02000000
每当系统或应用程序发送 DDE 消息时通知回调函数。

ulRes

类型:DWORD

保留;必须设置为零。

返回值

类型:UINT

如果函数成功,则返回值 DMLERR_NO_ERROR

如果函数失败,则返回值为以下值之一:

言论

使用 DDEML 的多个实例的应用程序不得在实例之间传递 DDEML 对象。

DDE 监视应用程序不应尝试在同一应用程序实例的上下文中执行 DDE 操作(建立对话、发出事务等)。

如果同一任务的任何实例已有同步事务,同步事务将失败,并出现 DMLERR_REENTRANCY 错误。

CBF_FAIL_ALLSVRXACTIONS 标志会导致 DDEML 筛选所有服务器事务,并且可以通过后续调用 DdeInitialize进行更改。 APPCMD_CLIENTONLY 标志可防止 DDEML 为服务器创建密钥资源,并且无法通过后续调用 DdeInitialize进行更改。

有 ANSI 版本和 unicode 版本的 DdeInitialize。 调用的版本确定用于控制 DDE 会话(ANSI 或 Unicode)的窗口过程的类型,以及 CONVCONTEXT 结构(CP_WINANSICP_WINUNICODEiCodePage 成员的默认值。

注意

ddeml.h 标头将 DdeInitialize 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
最低支持的客户端 Windows 2000 Professional [仅限桌面应用]
支持的最低服务器 Windows 2000 Server [仅限桌面应用]
目标平台 窗户
标头 ddeml.h (包括 Windows.h)
User32.lib
DLL User32.dll

另请参阅

动态数据交换管理库概述