CComCoClass::CreateInstance
Utilizzare queste funzioni CreateInstance per creare un'istanza di un oggetto COM e recuperare un puntatore a interfaccia senza l'utilizzo delle API COM.
template <class Q>
static HRESULT CreateInstance(
Q** pp
);
template <class Q>
static HRESULT CreateInstance(
IUnknown* punkOuter,
Q** pp
);
Parametri
Q
Un'interfaccia COM che deve essere restituita mediante pp.punkOuter
[in] sconosciuto sconosciuto o di controllo esterno dell'aggregazione.pp
[out] indirizzo di una variabile puntatore che riceve un puntatore a interfaccia obbligatorio se la modifica ha esito positivo.
Valore restituito
Un valore standard HRESULT.Vedere CoCreateInstance in Windows SDK per una descrizione dei valori restituiti.
Note
Utilizzare il primo overload di questa funzione per la creazione di un oggetto tipica, utilizzare il secondo overload per aggregare l'oggetto creato.
La classe ATL che implementa l'oggetto COM di associazione (ovvero la classe utilizzata come primo parametro di modello a CComCoClass) deve essere nello stesso progetto del codice chiamante.La creazione di un oggetto COM viene eseguito da class factory registrato per questa classe ATL.
Queste funzioni sono utili per creare oggetti aver impedito da essere creabile esternamente tramite la macro OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO.Sono anche utili nelle situazioni in cui si desidera evitare di API COM per motivi di efficienza.
Si noti che l'interfaccia Q deve avere un IID associato che può essere recuperata utilizzando l'operatore __uuidof.
Esempio
Nell'esempio seguente, CDocument è una classe generata mediante la creazione guidata ATL derivata da CComCoClass che implementa l'interfaccia IDocument.La classe è registrata nella mappa oggetto con la macro OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO in modo dai client non potranno creare istanze di documento utilizzando CoCreateInstance.CApplication è una coclasse che fornisce un metodo in una delle relative interfacce COM per creare istanze della classe del documento.Il codice riportato di seguito viene illustrato quanto la creazione di istanze del documento le classi utilizzando il membro CreateInstance ereditato dalla classe base CComCoClass.
STDMETHODIMP CMyApp::CreateDocument( /* [out, retval] */ IDocument** ppDoc)
{
*ppDoc = NULL;
return CMyDoc::CreateInstance(ppDoc);
}
Requisiti
Header: atlcom.h