Udostępnij za pośrednictwem


Klasa CComClassFactory

Ta klasa implementuje interfejs IClassFactory .

Składnia

class CComClassFactory
    : public IClassFactory,
      public CComObjectRootEx<CComGlobalsThreadModel>

Elementy członkowskie

Metody publiczne

Nazwa/nazwisko opis
CComClassFactory::CreateInstance Tworzy obiekt określonego identyfikatora CLSID.
CComClassFactory::LockServer Blokuje fabrykę klas w pamięci.

Uwagi

CComClassFactory implementuje interfejs IClassFactory , który zawiera metody tworzenia obiektu określonego identyfikatora CLSID, a także blokowanie fabryki klas w pamięci w celu umożliwienia szybszego tworzenia nowych obiektów. IClassFactory Należy zaimplementować dla każdej klasy, która jest rejestrowana w rejestrze systemowym i do której przypisujesz identyfikator CLSID.

Obiekty ATL zwykle uzyskują fabrykę klas, wyprowadzając je z klasy CComCoClass. Ta klasa zawiera DECLARE_CLASSFACTORY makra, które deklaruje CComClassFactory jako domyślną fabrykę klas. Aby zastąpić tę wartość domyślną, określ jedno z DECLARE_CLASSFACTORYmakr XXX w definicji klasy. Na przykład makro DECLARE_CLASSFACTORY_EX używa określonej klasy dla fabryki klas:

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.

Powyższa definicja klasy określa, że CMyClassFactory będzie używany jako domyślna fabryka klas obiektu. CMyClassFactory musi pochodzić z i CComClassFactory zastąpić CreateInstance.

ATL udostępnia trzy inne makra, które deklarują fabrykę klas:

Wymagania

Nagłówek: atlcom.h

CComClassFactory::CreateInstance

Tworzy obiekt określonego identyfikatora CLSID i pobiera wskaźnik interfejsu do tego obiektu.

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

Parametry

pUnkOuter
[in] Jeśli obiekt jest tworzony w ramach agregacji, element pUnkOuter musi być zewnętrznym nieznanym obiektem. W przeciwnym razie pUnkOuter musi mieć wartość NULL.

riid
[in] Identyfikator IID żądanego interfejsu. Jeśli parametr pUnkOuter ma wartość inną niż NULL, riid musi mieć wartość IID_IUnknown.

ppvObj
[out] Wskaźnik do wskaźnika interfejsu zidentyfikowany przez riid. Jeśli obiekt nie obsługuje tego interfejsu, parametr ppvObj ma wartość NULL.

Wartość zwracana

Standardowa wartość HRESULT.

CComClassFactory::LockServer

Zwiększa i dekrementuje liczbę blokad modułu przez wywołanie _Module::Lock i _Module::Unlock, odpowiednio.

STDMETHOD(LockServer)(BOOL fLock);

Parametry

stado
[in] Jeśli wartość TRUE, liczba blokad jest zwiększana; w przeciwnym razie liczba blokad jest dekrementowana.

Wartość zwracana

Standardowa wartość HRESULT.

Uwagi

_Module odwołuje się do wystąpienia globalnego CComModule lub klasy pochodnej.

Wywołanie LockServer umożliwia klientowi trzymanie się fabryki klas, dzięki czemu można szybko utworzyć wiele obiektów.

Zobacz też

Klasa CComObjectRootEx
CComGlobalsThreadModel
Omówienie klasy