Sdílet prostřednictvím


CComClassFactorySingleton – třída

Tato třída je odvozena z CComClassFactory a používá CComObjectGlobal k vytvoření jednoho objektu.

Důležité

Tuto třídu a její členy nelze použít v aplikacích, které se spouští v prostředí Windows Runtime.

Syntaxe

template<class T>
class CComClassFactorySingleton : public CComClassFactory

Parametry

T
Tvůj předmět.

CComClassFactorySingleton je odvozen z CComClassFactory a používá CComObjectGlobal k vytvoření jednoho objektu. Každé volání CreateInstance metody jednoduše dotazuje tento objekt pro ukazatel rozhraní.

Členové

Veřejné metody

Název Popis
CComClassFactorySingleton::CreateInstance m_spObj Dotazy na ukazatel rozhraní

Veřejné datové členy

Název Popis
CComClassFactorySingleton::m_spObj Objekt CComObjectGlobal vytvořený objektem CComClassFactorySingleton.

Poznámky

Objekty ATL obvykle získávají objekt pro vytváření tříd odvozením z CComCoClass. Tato třída obsahuje DECLARE_CLASSFACTORY makra, které deklaruje CComClassFactory jako výchozí objekt pro vytváření tříd. Chcete-li použít CComClassFactorySingleton, zadejte DECLARE_CLASSFACTORY_SINGLETON makro v definici třídy objektu. Příklad:

class ATL_NO_VTABLE CMySingletonClass :
   public CComObjectRootEx<CComSingleThreadModel>,
   public CComCoClass<CMySingletonClass, &CLSID_MySingletonClass>,
   public IMySingletonClass
{
public:
   DECLARE_CLASSFACTORY_SINGLETON(CMySingletonClass)

   // Remainder of class declaration omitted.

Hierarchie dědičnosti

CComObjectRootBase

CComObjectRootEx

IClassFactory

CComClassFactory

CComClassFactorySingleton

Požadavky

Hlavička: atlcom.h

CComClassFactorySingleton::CreateInstance

Volání QueryInterface prostřednictvím m_spObj k načtení ukazatele rozhraní.

STDMETHOD(CreateInstance)(LPUNKNOWN pUnkOuter, REFIID riid, void** ppvObj);

Parametry

pUnkOuter
[v] Pokud se objekt vytváří jako součást agregace, musí být pUnkOuter vnějším neznámým objektem. V opačném případě musí být hodnota pUnkOuter null.

riid
[v] IID požadovaného rozhraní. Pokud hodnota pUnkOuter není null, riid musí být IID_IUnknown.

ppvObj
[ven] Ukazatel na ukazatel rozhraní identifikovaný riidem. Pokud objekt nepodporuje toto rozhraní, ppvObj je nastaven na HODNOTU NULL.

Návratová hodnota

Standardní hodnota HRESULT.

CComClassFactorySingleton::m_spObj

Objekt CComObjectGlobal vytvořený objektem CComClassFactorySingleton.

CComPtr<IUnknown> m_spObj;

Poznámky

Každé volání Metody CreateInstance jednoduše dotazuje tento objekt na ukazatel rozhraní.

Všimněte si, že aktuální forma m_spObj představuje zásadní změnu způsobu, jakým CComClassFactorySingleton fungovalo v předchozích verzích ATL. V předchozích verzích CComClassFactorySingleton byl objekt vytvořen ve stejnou dobu jako objekt pro vytváření tříd během inicializace serveru. V sadě Visual C++.NET 2003 a novějších se objekt vytvoří laziálně při prvním požadavku. Tato změna může způsobit chyby v programech, které spoléhají na počáteční inicializaci.

Viz také

IClassFactory
CComClassFactory2 – třída
CComClassFactoryAutoThread – třída
CComObjectRootEx – třída
CComGlobalsThreadModel
Přehled třídy