Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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:
DECLARE_CLASSFACTORY2 używa klasy CComClassFactory2, która kontroluje tworzenie za pośrednictwem licencji.
DECLARE_CLASSFACTORY_AUTO_THREAD używa klasy CComClassFactoryAutoThread, która tworzy obiekty w wielu mieszkaniach.
DECLARE_CLASSFACTORY_SINGLETON używa klasy CComClassFactorySingleton, która tworzy pojedynczy obiekt CComObjectGlobal.
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