Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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