CComClassFactory Class
Этот класс реализует интерфейс IClassFactory.
class CComClassFactory : public IClassFactory,
public CComObjectRootEx< CComGlobalsThreadModel >
Члены
Открытые методы
Имя |
Описание |
---|---|
Создает объект указанного идентификатора CLSID. |
|
Блокирует фабрика класса в памяти. |
Заметки
CComClassFactory реализует интерфейс IClassFactory, содержащий методы для создания объекта заданного идентификатора CLSID, а также блокирует фабрика класса в памяти для новых объектов для создания быстрее. IClassFactory должен быть реализован для каждого класса, который регистрируется в системном реестре и к которому можно присвоить CLSID.
Обычно объекты библиотеки ATL безо фабрику класса, производного от CComCoClass. Этот класс содержит макрос DECLARE_CLASSFACTORY, который объявляет CComClassFactory по умолчанию как фабрика класса. Чтобы переопределить это значение по умолчанию, укажите один из макросов DECLARE_CLASSFACTORYXXX в определении класса. Например, макрос DECLARE_CLASSFACTORY_EX использует указанный класс для фабрики классов:
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.
Приведенное выше определение класса указывает, что CMyClassFactory будет использоваться как фабрика класса объекта по умолчанию. CMyClassFactory должно быть производным от CComClassFactory, и переопределить CreateInstance.
Библиотеки ATL предоставляет 3 остальных макросов, объявляются фабрику класса:
DECLARE_CLASSFACTORY2 использует CComClassFactory2, который контролирует создание с помощью лицензию.
DECLARE_CLASSFACTORY_AUTO_THREAD использует CComClassFactoryAutoThread, который создает объекты в нескольких подразделениях.
DECLARE_CLASSFACTORY_SINGLETON использует CComClassFactorySingleton, который создает единственный объект CComObjectGlobal.
Требования
Header: atlcom.h