Sdílet prostřednictvím


CComClassFactory – třída

Tato třída implementuje IClassFactory rozhraní.

Syntaxe

class CComClassFactory
    : public IClassFactory,
      public CComObjectRootEx<CComGlobalsThreadModel>

Členové

Veřejné metody

Název Popis
CComClassFactory::CreateInstance Vytvoří objekt zadaného CLSID.
CComClassFactory::LockServer Uzamkne objekt pro vytváření tříd v paměti.

Poznámky

CComClassFactory implementuje IClassFactory rozhraní, které obsahuje metody pro vytvoření objektu konkrétní CLSID, stejně jako uzamčení objektu pro vytváření tříd v paměti, aby bylo možné vytvářet nové objekty rychleji. IClassFactory musí být implementována pro každou třídu, kterou zaregistrujete v systémovém registru a ke které přiřadíte CLSID.

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 toto výchozí nastavení přepsat, zadejte jedno z DECLARE_CLASSFACTORYmaker XXX v definici třídy. Například makro DECLARE_CLASSFACTORY_EX používá zadanou třídu pro továrnu tříd:

class ATL_NO_VTABLE CMyCustomClass :
   public CComObjectRootEx<CComSingleThreadModel>,
   public CComCoClass<CMyCustomClass, &CLSID_MyCustomClass>,
   public IDispatchImpl<IMyCustomClass, &IID_IMyCustomClass, &LIBID_NVC_ATL_COMLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
public:
   DECLARE_CLASSFACTORY_EX(CMyClassFactory)

   // Remainder of class declaration omitted.

Výše uvedená definice třídy určuje, že CMyClassFactory se použije jako výchozí objekt pro vytváření tříd objektu. CMyClassFactory musí odvodit a CComClassFactory přepsat CreateInstance.

ATL poskytuje tři další makra, která deklarují objekt pro vytváření tříd:

Požadavky

Hlavička: atlcom.h

CComClassFactory::CreateInstance

Vytvoří objekt zadaného CLSID a načte ukazatel rozhraní na tento objekt.

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.

CComClassFactory::LockServer

Zvýší a sníží počet zámků modulu voláním _Module::Lock a _Module::Unlockv uvedeném pořadí.

STDMETHOD(LockServer)(BOOL fLock);

Parametry

hejno
[v] Je-li pravda, počet zámků se zvýší; jinak se počet zámků sníží.

Návratová hodnota

Standardní hodnota HRESULT.

Poznámky

_Module odkazuje na globální instanci CComModule nebo třídy odvozené z ní.

Volání LockServer umožňuje klientovi držet se objektu pro vytváření tříd, aby bylo možné rychle vytvořit více objektů.

Viz také

CComObjectRootEx – třída
CComGlobalsThreadModel
Přehled třídy