Freigeben über


CComCoClass::CreateInstance

Verwenden Sie diese CreateInstance-Funktionen, um eine Instanz eines COM-Objekts zu erstellen und einen Schnittstellenzeiger abzurufen, ohne COM-APIs zu verwenden.

template <class Q>
static HRESULT CreateInstance(
   Q** pp 
);
template <class Q>
static HRESULT CreateInstance(
   IUnknown* punkOuter,
   Q** pp 
);

Parameter

  • Q
    Die COM-Schnittstelle, die über pp zurückgegeben werden soll.

  • punkOuter
    [in] Das äußere unbekannte oder steuernde Unbekannte des Aggregats.

  • pp
    [out] die Adresse einer Zeigervariable, die den angeforderten Schnittstellenzeiger empfängt, wenn Erstellung folgt.

Rückgabewert

Ein HRESULT-Standardwert.Siehe CoCreateInstance in Windows SDK für eine Beschreibung möglicher Rückgabewerten.

Hinweise

Verwenden Sie die erste Überladung dieser Funktion für typische Objekterstellung; Verwenden Sie die zweite Überladung, wenn das Objekt aggregieren müssen, das erstellt wird.

Die ATL-Klasse, die das erforderliche COM-Objekt implementiert (das heißt, die Klasse verwendet als der erste Vorlagenparameter zu CComCoClass) muss im gleichen Projekt wie der aufrufende Code sein.Die Erstellung des COM-Objekts wird durch die Klassenfactory durchgeführt, die für diese ATL-Klasse registriert wird.

Diese Funktionen sind für das Erstellen von hilfreich, dass Sie am Sein extern erstellbar verhindert haben, indem Sie das OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO-Makro verwenden.Sie sind auch in Situationen, in denen Sie COM-APIs aus Gründen der Effizienz vermeiden möchten.

Beachten Sie, dass die Schnittstelle Q ein IID verfügen muss, wird auch, die mithilfe des Operators __uuidof abgerufen werden kann.

Beispiel

Im folgenden Beispiel ist CDocument eine vom Assistenten generierte ATL-Klasse, die von CComCoClass abgeleitet ist, die die IDocument-Schnittstelle implementiert.Die Klasse wird in der Objektzuordnung mit dem OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO-Makro registriert, sodass Clients Instanzen des Dokuments nicht mit CoCreateInstance erstellen.CApplication ist eine Co-Klasse, die eine Methode auf einer eigenen COM-Schnittstellen zur Verfügung stellt, um Instanzen der Dokumentklasse zu erstellen.Der folgende Code zeigt, wie die es Instanzen der Dokumentklasse mithilfe des CreateInstance-Members einfach sind, der von der CComCoClass Basisklasse geerbt wird erstellt.

STDMETHODIMP CMyApp::CreateDocument( /* [out, retval] */ IDocument** ppDoc)
{
   *ppDoc = NULL;
   return CMyDoc::CreateInstance(ppDoc);
}

Anforderungen

Header: möchten

Siehe auch

Referenz

CComCoClass-Klasse