Класс КкомклассфакториCComClassFactory Class
Этот класс реализует интерфейс IClassFactory .This class implements the IClassFactory interface.
СинтаксисSyntax
class CComClassFactory
: public IClassFactory,
public CComObjectRootEx<CComGlobalsThreadModel>
ЧленыMembers
Открытые методыPublic Methods
nameName | ОписаниеDescription |
---|---|
Ккомклассфактори:: CreateInstanceCComClassFactory::CreateInstance | Создает объект указанного идентификатора CLSID.Creates an object of the specified CLSID. |
Ккомклассфактори:: ЛокксерверCComClassFactory::LockServer | Блокирует фабрику класса в памяти.Locks the class factory in memory. |
КомментарииRemarks
CComClassFactory
реализует интерфейс IClassFactory , который содержит методы для создания объекта определенного идентификатора CLSID, а также блокирует фабрику класса в памяти, чтобы новые объекты могли создаваться быстрее.CComClassFactory
implements the IClassFactory interface, which contains methods for creating an object of a particular CLSID, as well as locking the class factory in memory to allow new objects to be created more quickly. IClassFactory
должен быть реализован для каждого класса, регистрируемого в системном реестре и которому назначается идентификатор CLSID.IClassFactory
must be implemented for every class that you register in the system registry and to which you assign a CLSID.
Объекты ATL обычно получают фабрику классов путем наследования от CComCoClass.ATL objects normally acquire a class factory by deriving from CComCoClass. Этот класс включает макрос DECLARE_CLASSFACTORY, который объявляет CComClassFactory
фабрику классов по умолчанию.This class includes the macro DECLARE_CLASSFACTORY, which declares CComClassFactory
as the default class factory. Чтобы переопределить это значение по умолчанию, укажите один из DECLARE_CLASSFACTORY
макросов xxx в определении класса.To override this default, specify one of the DECLARE_CLASSFACTORY
XXX macros in your class definition. Например, DECLARE_CLASSFACTORY_EX макрос использует указанный класс для фабрики класса:For example, the DECLARE_CLASSFACTORY_EX macro uses the specified class for the class factory:
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
будет использоваться в качестве фабрики класса по умолчанию для объекта.The above class definition specifies that CMyClassFactory
will be used as the object's default class factory. CMyClassFactory
должен быть производным от CComClassFactory
и переопределять CreateInstance
.CMyClassFactory
must derive from CComClassFactory
and override CreateInstance
.
ATL предоставляет три других макроса, которые объявляют фабрику класса:ATL provides three other macros that declare a class factory:
DECLARE_CLASSFACTORY2 Использует CComClassFactory2, который управляет созданием с помощью лицензии.DECLARE_CLASSFACTORY2 Uses CComClassFactory2, which controls creation through a license.
DECLARE_CLASSFACTORY_AUTO_THREAD Использует ккомклассфакторяутосреад, который создает объекты в нескольких подразделениях.DECLARE_CLASSFACTORY_AUTO_THREAD Uses CComClassFactoryAutoThread, which creates objects in multiple apartments.
DECLARE_CLASSFACTORY_SINGLETON Использует ккомклассфакторисинглетон, который конструирует один объект ккомобжектглобал .DECLARE_CLASSFACTORY_SINGLETON Uses CComClassFactorySingleton, which constructs a single CComObjectGlobal object.
ТребованияRequirements
Заголовок: атлком. hHeader: atlcom.h
Ккомклассфактори:: CreateInstanceCComClassFactory::CreateInstance
Создает объект указанного идентификатора CLSID и получает указатель интерфейса на этот объект.Creates an object of the specified CLSID and retrieves an interface pointer to this object.
STDMETHOD(CreateInstance)(LPUNKNOWN pUnkOuter, REFIID riid, void** ppvObj);
ПараметрыParameters
пункаутерpUnkOuter
окне Если объект создается как часть агрегата, пункаутер должен быть внешним неизвестным.[in] If the object is being created as part of an aggregate, then pUnkOuter must be the outer unknown. В противном случае пункаутер должен иметь значение null.Otherwise, pUnkOuter must be NULL.
riidriid
окне IID запрашиваемого интерфейса.[in] The IID of the requested interface. Если пункаутер не равен null, riid должен иметь значение IID_IUnknown
.If pUnkOuter is non- NULL, riid must be IID_IUnknown
.
ппвобжppvObj
заполняет Указатель на указатель интерфейса, идентифицируемый riid.[out] A pointer to the interface pointer identified by riid. Если объект не поддерживает этот интерфейс, ппвобж имеет значение null.If the object does not support this interface, ppvObj is set to NULL.
Возвращаемое значениеReturn Value
Стандартное значение HRESULT.A standard HRESULT value.
Ккомклассфактори:: ЛокксерверCComClassFactory::LockServer
Увеличивает и уменьшает счетчик блокировок модуля, вызывая _Module::Lock
и _Module::Unlock
соответственно.Increments and decrements the module lock count by calling _Module::Lock
and _Module::Unlock
, respectively.
STDMETHOD(LockServer)(BOOL fLock);
ПараметрыParameters
флоккfLock
окне Если значение равно TRUE, счетчик блокировок увеличивается; в противном случае счетчик блокировок уменьшается.[in] If TRUE, the lock count is incremented; otherwise, the lock count is decremented.
Возвращаемое значениеReturn Value
Стандартное значение HRESULT.A standard HRESULT value.
КомментарииRemarks
_Module
ссылается на глобальный экземпляр CComModule или производный от него класс._Module
refers to the global instance of CComModule or a class derived from it.
Вызов LockServer
позволяет клиенту хранить фабрику класса, чтобы можно было быстро создавать несколько объектов.Calling LockServer
allows a client to hold onto a class factory so that multiple objects can be created quickly.
См. также разделSee also
Класс CComObjectRootExCComObjectRootEx Class
ккомглобалссреадмоделCComGlobalsThreadModel
Общие сведения о классахClass Overview