CComCoClass::CreateInstance
使用這些 CreateInstance 函式建立 COM 物件的執行個體和擷取介面指標,而不需要使用 COM API。
template <class Q>
static HRESULT CreateInstance(
Q** pp
);
template <class Q>
static HRESULT CreateInstance(
IUnknown* punkOuter,
Q** pp
);
參數
Q
應將 pp傳回的 COM 介面。punkOuter
[in] 彙總的外部未知或未知的控制項。pp
[out] 接收要求之介面指標的指標變數的位址,如果建立成功。
傳回值
標準 HRESULT 值。 針對可能的傳回值的說明請參閱在 Windows SDK 的 CoCreateInstance() 。
備註
對於一般的物件建立使用此函式的第一個多載,,當您需要建立彙總的物件時,請使用第二個多載。
實作的 COM 物件 (也就是類別的 ATL 類別做為第一個樣板參數傳遞給 CComCoClass) 必須在專案和呼叫程式碼相同。 COM 物件的建立由 ATL 類別註冊的 Class Factory 執行。
這些函式是用來很有用物件讓您可外部建立使用 OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO 巨集。 它們也適用於您想要為有效的目的避免 COM API 的情況。
請注意 Q 介面 IID 必須具有與使用 __uuidof 運算子,可以擷取的。
範例
在下列範例中, CDocument 是實作介面 IDocument 從 CComCoClass 衍生的精靈產生的 ATL 類別。 類別會使用 OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO 巨集的物件對應登錄使用 CoCreateInstance(),因此,用戶端就不能建立文件的執行個體。 CApplication 位於其 COM 介面的其中一個提供方法讓文件建立類別的執行個體中。 下列程式碼顯示如何建立簡單的文件執行個體中使用 CComCoClass 類別從基底類別繼承的 CreateInstance 成員。
STDMETHODIMP CMyApp::CreateDocument( /* [out, retval] */ IDocument** ppDoc)
{
*ppDoc = NULL;
return CMyDoc::CreateInstance(ppDoc);
}
需求
Header: atlcom.h