Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
A Active Template Library (ATL) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.
Esta classe implementa a interface IClassFactory .
Sintaxe
class CComClassFactory
: public IClassFactory,
public CComObjectRootEx<CComGlobalsThreadModel>
Membros
Métodos Públicos
| Nome | Description |
|---|---|
| CComClassFactory::CreateInstance | Cria um objeto do CLSID especificado. |
| CComClassFactory::LockServer | Tranca a fábrica da classe em memória. |
Observações
CComClassFactory implementa a interface IClassFactory , que contém métodos para criar um objeto de um CLSID particular, bem como bloquear a fábrica de classes em memória para permitir a criação de novos objetos mais rapidamente.
IClassFactory deve ser implementado para cada classe que regista no registo do sistema e à qual atribui um CLSID.
Os objetos ATL normalmente adquirem uma fábrica de classes derivando do CComCoClass. Esta classe inclui o macro DECLARE_CLASSFACTORY, que declara CComClassFactory como a classe fábrica por defeito. Para ultrapassar este padrão, especifique uma das DECLARE_CLASSFACTORYmacros XXX na definição da sua classe. Por exemplo, a macro DECLARE_CLASSFACTORY_EX usa a classe especificada para a fábrica de classes:
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.
A definição de classe acima especifica que CMyClassFactory será usada como a fábrica de classes padrão do objeto.
CMyClassFactory deve derivar de CComClassFactory e sobrepor CreateInstance.
O ATL fornece três outros macros que declaram uma fábrica de classes:
DECLARE_CLASSFACTORY2 Utiliza o CComClassFactory2, que controla a criação através de uma licença.
DECLARE_CLASSFACTORY_AUTO_THREAD Utiliza o CComClassFactoryAutoThread, que cria objetos em vários apartamentos.
DECLARE_CLASSFACTORY_SINGLETON Utiliza o CComClassFactorySingleton, que constrói um único objeto CComObjectGlobal (CComObjectGlobal ).
Requerimentos
Cabeçalho: atlcom.h
CComClassFactory::CreateInstance
Cria um objeto com o CLSID especificado e recupera um ponteiro de interface para esse objeto.
STDMETHOD(CreateInstance)(LPUNKNOWN pUnkOuter, REFIID riid, void** ppvObj);
Parâmetros
PUnkOuter
[dentro] Se o objeto está a ser criado como parte de um agregado, então o pUnkOuter deve ser o desconhecido exterior. Caso contrário, pUnkOuter tem de ser NULL.
riid
[dentro] O IID da interface solicitada. Se pUnkOuter for non-NULL, riid deve ser IID_IUnknown.
ppvObj
[fora] Um ponteiro para o ponteiro de interface identificado por riid. Se o objeto não suportar esta interface, ppvObj é definido como NULL.
Valor de retorno
Um valor HRESULT padrão.
CComClassFactory::LockServer
Incrementa e diminui a contagem de bloqueios de módulos chamando _Module::Lock e _Module::Unlock, respetivamente.
STDMETHOD(LockServer)(BOOL fLock);
Parâmetros
fLock
[dentro] Se TRUE, a contagem de bloqueios é incrementada; caso contrário, o número de bloqueios é decrescente.
Valor de retorno
Um valor HRESULT padrão.
Observações
_Module refere-se à instância global do CComModule ou a uma classe derivada dele.
A chamada LockServer permite que um cliente mantenha uma fábrica de classes para que múltiplos objetos possam ser criados rapidamente.
Consulte também
Classe CComObjectRootEx
CComGlobalsThreadModel
Visão geral da classe