DdeInitializeA 函数 (ddeml.h)
将应用程序注册到 动态数据交换管理库 (DDEML) 。 应用程序必须在调用任何其他动态数据交换管理库 (DDEML) 函数之前调用此函数。
语法
UINT DdeInitializeA(
[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 应用程序的性能。
此参数可使用以下一个或多个值。
值 | 含义 |
---|---|
|
使应用程序能够监视系统中的 DDE 活动。 此标志供 DDE 监视应用程序使用。 应用程序通过将一个或多个监视器标志与 APPCLASS_MONITOR 标志组合来指定要监视的 DDE 活动类型。 有关详细信息,请参阅以下“备注”部分。 |
|
将应用程序注册为标准 (非监视) DDEML 应用程序。 |
|
防止应用程序成为 DDE 会话中的服务器。 应用程序只能是客户端。 此标志可减少 DDEML 的资源消耗。 它包括 CBF_FAIL_ALLSVRXACTIONS 标志的功能。 |
|
阻止 DDEML 向应用程序发送 XTYP_CONNECT 和 XTYP_WILDCONNECT 事务,直到应用程序已创建其字符串句柄并注册其服务名称,或者通过后续调用 DdeNameService 或 DdeInitialize 函数关闭筛选。 无论应用程序是否指定标志,当应用程序首次调用 DdeInitialize 时,此标志始终有效。 在后续调用 DdeInitialize 时,不指定此标志会关闭应用程序的服务名称筛选器,但指定它会打开应用程序的服务名称筛选器。 |
|
阻止回调函数接收服务器事务。 系统将 DDE_FNOTPROCESSED 返回到向此应用程序发送事务的每个客户端。 此标志等效于合并所有CBF_FAIL_标志。 |
|
防止回调函数接收 XTYP_ADVSTART 和 XTYP_ADVSTOP 事务。 系统将 DDE_FNOTPROCESSED 返回到向服务器发送 XTYP_ADVSTART 或 XTYP_ADVSTOP 事务的每个客户端。 |
|
防止回调函数接收 XTYP_CONNECT 和 XTYP_WILDCONNECT 事务。 |
|
阻止回调函数接收 XTYP_EXECUTE 事务。 系统将 DDE_FNOTPROCESSED 返回到将 XTYP_EXECUTE 事务发送到服务器的客户端。 |
|
阻止回调函数接收 XTYP_POKE 事务。 系统会将 DDE_FNOTPROCESSED 返回到将 XTYP_POKE 事务发送到服务器的客户端。 |
|
阻止回调函数接收 XTYP_REQUEST 事务。 系统将 DDE_FNOTPROCESSED 返回到向服务器发送 XTYP_REQUEST 事务的客户端。 |
|
阻止回调函数从应用程序自己的实例接收 XTYP_CONNECT 事务。 此标志阻止应用程序与其自己的实例建立 DDE 会话。 如果应用程序需要与自身的其他实例通信,但不能与其自身通信,则应用程序应使用此标志。 |
|
阻止回调函数接收任何通知。 此标志等效于合并所有CBF_SKIP_标志。 |
|
阻止回调函数接收 XTYP_CONNECT_CONFIRM 通知。 |
|
阻止回调函数接收 XTYP_DISCONNECT 通知。 |
|
阻止回调函数接收 XTYP_REGISTER 通知。 |
|
阻止回调函数接收 XTYP_UNREGISTER 通知。 |
|
每当事务发送到系统中的任何 DDE 回调函数时,通知回调函数。 |
|
每当建立或终止会话时通知回调函数。 |
|
每当发生 DDE 错误时通知回调函数。 |
|
每当 DDE 应用程序创建、释放或递增字符串句柄的使用计数时,或者每当由于调用 DdeUninitialize 函数而释放字符串句柄时,通知回调函数。 |
|
每当建议循环启动或结束时,通知回调函数。 |
|
每当系统或应用程序发布 DDE 消息时,通知回调函数。 |
|
每当系统或应用程序发送 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 版本。 调用的版本确定用于控制 DDE 会话 (ANSI 或 Unicode) 的窗口过程的类型,以及 CONVCONTEXT 结构的 iCodePage 成员的默认值 (CP_WINANSI或CP_WINUNICODE) 。
注意
ddeml.h 标头将 DdeInitialize 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | ddeml.h (包括 Windows.h) |
Library | User32.lib |
DLL | User32.dll |