DdeInitializeW 函式 (ddeml.h)
向 動態數據交換管理連結庫 (DDEML) 註冊應用程式。 應用程式必須先呼叫此函式,才能呼叫任何其他動態數據交換管理連結庫 (DDEML) 函式。
語法
UINT DdeInitializeW(
[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 應用程式的效能。
此參數可以是下列其中一或多個值。
價值 | 意義 |
---|---|
|
讓應用程式能夠監視系統中的 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 版本和 Unicode 版本的 DdeInitialize。 呼叫的版本會決定用來控制 DDE 交談的視窗程式類型(ANSI 或 Unicode),以及 CONVCONTEXT 結構之 iCodePage 成員的預設值(CP_WINANSI 或 CP_WINUNICODE)。
注意
ddeml.h 標頭會根據 UNICODE 預處理器常數的定義,將 DdeInitialize 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
支援的最低伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平臺 | 窗戶 |
標頭 | ddeml.h (包括 Windows.h) |
連結庫 | User32.lib |
DLL | User32.dll |