CComCoClass::CreateInstance
Pomocí těchto CreateInstance funkce vytvoření instance COM objektu a získání ukazatele rozhraní bez používání rozhraní COM API.
template <class Q>
static HRESULT CreateInstance(
Q** pp
);
template <class Q>
static HRESULT CreateInstance(
IUnknown* punkOuter,
Q** pp
);
Parametry
Q
Rozhraní COM, která má být vrácena prostřednictvím pp .punkOuter
[v] Vnější neznámý nebo řízení neznámý agregační funkci.pp
[výstup] Adresa ukazatel Proměnná, která obdrží požadované rozhraní ukazatel, pokud vytvoření úspěšné.
Vrácená hodnota
Standard HRESULT hodnotu.Viz CoCreateInstance v popis možné vrácené hodnoty.
Poznámky
První přetížení tuto funkci použít pro vytvoření objektu typické; je nutné agregovat vytvářený objekt používáte druhý přetížení.
Třídy ATL provádění požadovaných objektu COM (, třída, která slouží jako první parametr šablony CComCoClass) musí být ve stejném projektu jako volající kód.Vytvoření objektu COM provádí třída registrován pro tuto třídu ATL.
Tyto funkce jsou užitečné pro vytváření objektů, které můžete mít zabráněno externě možné vytvořit pomocí OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO makro.Jsou také užitečné v situacích, kdy chcete zabránit rozhraní COM API z důvodů účinnosti.
Všimněte si, že rozhraní Q musí mít IID s ním spojené, které lze získat prostřednictvím __uuidof operátor.
Příklad
V následujícím příkladu CDocument třídy ATL generované průvodcem je odvozen od CComCoClass , implementuje IDocument rozhraní.Třída je zaregistrován objekt mapy s OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO makra tak, aby klienti nelze vytvořit instance dokumentu pomocí CoCreateInstance.CApplicationje CoClass, který umožňuje na jednom z jeho vlastní rozhraní COM k vytvoření instance třídy dokumentu.Kód níže ukazuje, jak snadné je k vytvoření instance pomocí třídy dokumentu CreateInstance člen zděděné z CComCoClass základní třída.
STDMETHODIMP CMyApp::CreateDocument( /* [out, retval] */ IDocument** ppDoc)
{
*ppDoc = NULL;
return CMyDoc::CreateInstance(ppDoc);
}
Požadavky
Záhlaví: atlcom.h