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 是實作介面 IDocumentCComCoClass 衍生的精靈產生的 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

請參閱

參考

CComCoClass 類別