DdeInitializeA 函式 (ddeml.h)

動態數據交換管理連結庫 註冊應用程式, (DDEML) 。 應用程式必須先呼叫此函式,才能呼叫任何其他動態數據交換管理連結庫 (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 應用程式的效能。

此參數可以是下列一或多個值。

意義
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。 呼叫的版本會決定用來控制 ANSI 或 Unicode () DDE 交談的視窗程式類型,以及 CONVCONTEXT 結構 (CP_WINANSI (CP_WINUNICODE) 之 iCodePage 成員的預設值。

注意

ddeml.h 標頭會將 DdeInitialize 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例

規格需求

需求
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 ddeml.h (包含 Windows.h)
程式庫 User32.lib
Dll User32.dll

另請參閱

動態數據交換管理連結庫概觀