CreateGenericComposite 函式 (objbase.h)

執行兩個Moniker的泛型組合,並提供結果複合Moniker的指標。

語法

HRESULT CreateGenericComposite(
  [in, optional] LPMONIKER pmkFirst,
  [in, optional] LPMONIKER pmkRest,
  [out]          LPMONIKER *ppmkComposite
);

參數

[in, optional] pmkFirst

要由 pmkRest 指向之 Moniker 左邊的 Moniker 指標。 可以指向任何類型的Moniker,包括泛型複合。

[in, optional] pmkRest

要由 pmkFirst 指向之 Moniker 右邊之 Moniker 的指標。 可以指向與 pmkRest Moniker 類型相容的任何類型的 Moniker,包括泛型複合。

[out] ppmkComposite

IMoniker* 指標變數的位址,該變數會接收複合 Moniker 對象的介面指標,這是撰寫 pmkFirstpmkRest 的結果。 這個物件支援 IMoniker 的 OLE 複合 Moniker 實作。 成功時,函式已在Moniker上呼叫 AddRef ,而呼叫端負責呼叫 Release。 如果 pmkFirstpmkRestNULL,則提供的指標是非 NULL 的指標。 如果 pmkFirstpmkRest 都是 NULL,或發生錯誤,則傳回的指標為 NULL

傳回值

此函式可以傳回標準傳回值E_OUTOFMEMORY,以及下列值。

傳回碼 描述
S_OK
輸入Monikers已成功撰寫。
MK_E_SYNTAX
例如,如果 pmkFirst 和 pmkRest 都是以絕對路徑) 為基礎的檔案 Monikers,則無法撰寫兩個 Monikers,因為路徑語法發生錯誤 (。

備註

CreateGenericComposite 會將兩個 Monikers 聯結至一個。 聯結的Moniker類別可能不同,只受限於組合規則。 只有在您藉由實作 IMoniker 介面來撰寫新的 Moniker 類別時,才呼叫此函式,在包含泛型組合功能的 IMoniker::ComposeWith 實作內。

Moniker 提供者應該呼叫 ComposeWith ,將兩個 Monikers 組合在一起。 ComposeWith 的實作應該 (,因為 OLE 實作) 嘗試,當類別合理時,請先執行非泛型組合,在其中合併相同類別的兩個 Moniker。 如果無法這麼做,實作可以呼叫 CreateGenericComposite 來執行泛型組合,這會在組合規則中結合不同類別的兩個 Moniker。 如果您撰寫新的Moniker類別,則可以定義新的非泛型組合類型。

在撰寫兩個Monikers的過程中, CreateGenericComposite 會簡化所有作業。 假設 pmkFirst 是泛型複合 Moniker、A + B + C, 而 pmkRest 是泛型複合 Moniker、C -1 + B -1 + Z (,其中 C -1 是 C) 的反轉。 函式會先撰寫 C 到 C -1,以無內容撰寫。 然後,它會將 B 和 B -1 組成任何專案。 最後,它會撰寫 A 到 Z,並提供泛型複合 Moniker A + Z 的指標。

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows 2000 Server [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 objbase.h
程式庫 Ole32.lib
Dll Ole32.dll
API 集合 ext-ms-win-com-ole32-l1-1-5 (於 Windows 10 10.0.15063 版)

另請參閱

IMoniker

IMoniker::ComposeWith