CComClassFactorySingleton Class
Essa classe deriva de CComClassFactory e usa CComObjectGlobal para construir um único objeto.
Importante
Essa classe e os respectivos membros não podem ser usados em aplicativos executados no Windows Runtime.
Sintaxe
template<class T>
class CComClassFactorySingleton : public CComClassFactory
Parâmetros
T
Sua classe.
CComClassFactorySingleton
deriva de CComClassFactory e usa CComObjectGlobal para construir um único objeto. Cada chamada para o método CreateInstance
consulta esse objeto para obter um ponteiro de interface.
Membros
Métodos públicos
Nome | Descrição |
---|---|
CComClassFactorySingleton::CreateInstance | Consultas m_spObj para um ponteiro de interface. |
Membros de Dados Públicos
Nome | Descrição |
---|---|
CComClassFactorySingleton::m_spObj | O objeto CComObjectGlobal construído por CComClassFactorySingleton . |
Comentários
Objetos ATL normalmente adquirem uma fábrica de classes derivando de CComCoClass. Essa classe inclui a macro DECLARE_CLASSFACTORY, que declara CComClassFactory
como a fábrica de classes padrão. Para usar CComClassFactorySingleton
, especifique a macro DECLARE_CLASSFACTORY_SINGLETON na definição de classe do seu objeto. Por exemplo:
class ATL_NO_VTABLE CMySingletonClass :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CMySingletonClass, &CLSID_MySingletonClass>,
public IMySingletonClass
{
public:
DECLARE_CLASSFACTORY_SINGLETON(CMySingletonClass)
// Remainder of class declaration omitted.
Hierarquia de herança
CComObjectRootBase
IClassFactory
CComClassFactorySingleton
Requisitos
Cabeçalho: atlcom.h
CComClassFactorySingleton::CreateInstance
Chama QueryInterface
por meio de m_spObj para recuperar um ponteiro de interface.
STDMETHOD(CreateInstance)(LPUNKNOWN pUnkOuter, REFIID riid, void** ppvObj);
Parâmetros
pUnkOuter
[entrada] Se o objeto estiver sendo criado como parte de uma agregação, pUnkOuter deverá ser o desconhecido externo. Caso contrário, pUnkOuter deve ser NULL.
riid
[in] O IID da interface solicitada . Se pUnkOuter não for NULL, riid deverá ser IID_IUnknown
.
ppvObj
[saída] Um ponteiro para o ponteiro da interface identificado por riid. Se o objeto não der suporte a essa interface, o ppvObj será definido como NULL.
Valor de retorno
Um valor HRESULT padrão.
CComClassFactorySingleton::m_spObj
O objeto CComObjectGlobal construído por CComClassFactorySingleton
.
CComPtr<IUnknown> m_spObj;
Comentários
Cada chamada para o método CreateInstance consulta esse objeto em busca de um ponteiro de interface.
Observe que a forma atual de m_spObj
apresenta uma alteração interruptiva da maneira como CComClassFactorySingleton
funcionava em versões anteriores da ATL. Nas versões anteriores, o objeto CComClassFactorySingleton
foi criado ao mesmo tempo que a fábrica de classes, durante a inicialização do servidor. No Visual C++.NET 2003 e posterior, o objeto é criado de forma lenta, na primeira solicitação. Essa alteração pode causar erros em programas que dependem da inicialização antecipada.
Confira também
IClassFactory
Classe CComClassFactory2
Classe CComClassFactoryAutoThread
Classe CComObjectRootEx
CComGlobalsThreadModel
Visão geral da aula