DdeInitializeA 函数 (ddeml.h)

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

语法

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

参数

[in, out] pidInst

类型: LPDWORD

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

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

[in] pfnCallback

类型: PFNCALLBACK

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

[in] afCmd

类型:DWORD

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

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

Value 含义
APPCLASS_MONITOR
0x00000001L
使应用程序能够监视系统中的 DDE 活动。 此标志供 DDE 监视应用程序使用。 应用程序指定要监视的 DDE 活动类型,方法是将一个或多个监视器标志与 APPCLASS_MONITOR 标志组合在一起。 有关详细信息,请参阅以下“备注”部分。
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 版本和 DdeInitialize 的 Unicode 版本。 调用的版本确定用于控制 ANSI 或 Unicode) (的 DDE 对话的窗口过程的类型,以及 CONVCONTEXT 结构成员的 iCodePage 成员的默认值 (CP_WINANSICP_WINUNICODE)

注意

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

要求

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

另请参阅

动态数据交换管理库概述