Partager via


CComCoClass::CreateInstance

Utilisez ces fonctions d' CreateInstance pour créer une instance d'un objet COM et récupérer un pointeur d'interface sans utiliser l'API COM.

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

Paramètres

  • Q
    L'interface COM qui doit être retournée par l'intermédiaire de pp.

  • punkOuter
    [in] L'inconnu inconnu ou vérification externe de l'agrégat.

  • pp
    [out] L'adresse d'une variable pointeur qui accepte le pointeur d'interface demandé si la création réussit.

Valeur de retour

Une valeur standard d' HRESULT .Consultez CoCreateInstance dans Kit de développement logiciel Windows pour une description des valeurs de retour possibles.

Notes

Utilisez la première surcharge de cette fonction pour la création d'objet classique ; utilisez la deuxième surcharge lorsque vous devez regrouper l'objet créé.

La classe ATL qui implémente l'objet COM requis (autrement dit, la classe utilisée comme premier paramètre de modèle à CComCoClass) doit être dans le même projet que le code appelant.La création de l'objet COM est exécutée par la fabrique de classe inscrite pour cette classe ATL.

Ces fonctions sont utiles pour créer des objets que vous avez empêché d'être extérieurement être créés à l'aide de la macro d' OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO .Elles sont également utiles dans les situations où vous souhaitez éviter l'API COM pour des raisons d'efficacité.

Notez que l'interface Q doit avoir un IID associé à ce qui peut être récupérée à l'aide de l'opérateur __uuidof .

Exemple

Dans l'exemple suivant, CDocument est une classe générée par l'Assistant ATL dérivée d' CComCoClass qui implémente l'interface d' IDocument .La classe est stockée dans la table d'objets avec la macro d' OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO pour que les clients ne peuvent pas créer des instances du document à l'aide de CoCreateInstance.CApplication est une coclasse qui fournit une méthode sur une de ses propres interfaces COM pour créer des instances de la classe de document.Le code suivant montre le nombre moyen de créer des instances du document fichier à l'aide de le membre d' CreateInstance hérité de la classe de base d' CComCoClass .

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

Configuration requise

Header: atlcom.h

Voir aussi

Référence

Classe de CComCoClass