CComCoClass::CreateInstance
Te CreateInstance funkcje tworzenia wystąpienia COM object i pobrać wskaźnika interfejsu bez korzystania z interfejsu API modelu COM.
template <class Q>
static HRESULT CreateInstance(
Q** pp
);
template <class Q>
static HRESULT CreateInstance(
IUnknown* punkOuter,
Q** pp
);
Parametry
Q
Interfejs COM, który powinien być zwrócony przez pp.punkOuter
[w] Nieznany zewnętrznego lub kontrolowania nieznany agregatu.pp
[out] Adres otrzymuje wskaźnik żądany interfejs, jeśli powiedzie się utworzenie zmiennej wskaźnika.
Wartość zwracana
Standard HRESULT wartości.Zobacz CoCreateInstance w Windows SDK opis możliwe wartości zwracane.
Uwagi
Użyj pierwszego przeciążenie tej funkcji do utworzenia obiektu typowe; przy drugim przeciążenie konieczne jest tworzony obiekt agregacji.
Klasy ATL wykonawczych wymaganych obiektów COM (czyli klasy wykorzystywane jako pierwszy parametr szablonu do CComCoClass) musi być w tym samym projekcie jako kod wywołujący.Tworzenie obiektu COM jest przeprowadzane przez zarejestrowane dla tej klasy ATL fabryki klasy.
Funkcje te są przydatne do tworzenia obiektów, które mają zapobiegać jest zewnętrznie tworzyć za pomocą OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO makro.Są one również przydatne w sytuacjach, gdy użytkownik chce uniknąć API modelu COM, ze względu na wydajność.
Należy zauważyć, że interfejs Q musi być skojarzony z nim IID, które mogą być pobierane za pomocą __uuidof operatora.
Przykład
W poniższym przykładzie CDocument klasy ATL wygenerowany przez kreatora jest pochodną CComCoClass który implementuje IDocument interfejsu.Klasa jest zarejestrowany w mapie obiektu z OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO makro, więc klienci nie można utworzyć wystąpienia dokumentu za pomocą CoCreateInstance.CApplicationjest CoClass, który zapewnia metodę na jednym z jego własnych interfejsów COM do utworzenia wystąpienia klasy dokumentu.Kod poniżej pokazuje, jak łatwo utworzyć wystąpienia klasy dokumentu za pomocą CreateInstance Członkowskich dziedziczone z CComCoClass klasa podstawowa.
STDMETHODIMP CMyApp::CreateDocument( /* [out, retval] */ IDocument** ppDoc)
{
*ppDoc = NULL;
return CMyDoc::CreateInstance(ppDoc);
}
Wymagania
Nagłówek: atlcom.h