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-se IUnknown para um objeto não agregado.
Sintaxe
template<class Base>
class CComObject : public Base
Parâmetros
Base
A sua classe, derivada de CComObjectRoot ou CComObjectRootEx, bem como de quaisquer outras interfaces que queira suportar no objeto.
Membros
Construtores Públicos
| Nome | Description |
|---|---|
| CComObject::CComObject | O construtor. |
| CComObject::~CComObject | O destruidor. |
Métodos Públicos
| Nome | Description |
|---|---|
| CComObject::AddRef | Incrementa a contagem de referência no objeto. |
| CComObject::CreateInstance | (Estática) Cria um novo CComObject objeto. |
| CComObject::QueryInterface | Recupera um ponteiro para a interface solicitada. |
| CComObject::Release | Diminui a contagem de referência no objeto. |
Observações
CComObject implementa IUnknown para um objeto não agregado. No entanto, chamadas a QueryInterface, AddRef, e Release são delegadas a CComObjectRootEx.
Para mais informações sobre a utilização CComObjectde , consulte o artigo Fundamentos dos Objetos ATL COM.
Hierarquia de herança
Base
CComObject
Requerimentos
Cabeçalho: atlcom.h
CComObject::AddRef
Incrementa a contagem de referência no objeto.
STDMETHOD_(ULONG, AddRef)();
Valor de retorno
Esta função devolve a nova contagem de referências incrementada no objeto. Este valor pode ser útil para diagnósticos ou testes.
CComObject::CComObject
O construtor incrementa a contagem de bloqueios de módulos.
CComObject(void* = NULL);
Parâmetros
vazio*
[dentro] Este parâmetro sem nome não é utilizado. Existe para simetria com outros CComXXXObjectXXX construtores.
Observações
O destruidor enfraquece-o.
Se um CComObjectobjeto derivado de - for construído com sucesso usando o new operador, a contagem inicial de referência é 0. Para definir a contagem de referências para o valor correto (1), faça uma chamada à função AddRef .
CComObject::~CComObject
O destruidor.
CComObject();
Observações
Liberta todos os recursos alocados, chama o FinalRelease e diminui a contagem de bloqueios de módulos.
CComObject::CreateInstance
Esta função estática permite-lhe criar um novo objeto CComObject<Base> , sem a sobrecarga do CoCreateInstance.
static HRESULT WINAPI CreateInstance(CComObject<Base>** pp);
Parâmetros
pp
[fora] Um ponteiro para um ponteiro CComObject<Base> . Se CreateInstance não for bem-sucedido, pp é definido como NULL.
Valor de retorno
Um valor HRESULT padrão.
Observações
O objeto devolvido tem uma contagem de referência zero, por isso chama AddRef imediatamente e depois usa Release para libertar a referência no ponteiro do objeto quando terminares.
Se não precisares de acesso direto ao objeto, mas ainda assim quiseres criar um novo objeto sem a sobrecarga de CoCreateInstance, usa em vez disso CComCoClass::CreateInstance .
Example
class ATL_NO_VTABLE CMyCircle :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CMyCircle, &CLSID_MyCircle>,
public IDispatchImpl<IMyCircle, &IID_IMyCircle, &LIBID_NVC_ATL_COMLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
public:
CMyCircle()
{
}
DECLARE_REGISTRY_RESOURCEID(IDR_MYCIRCLE)
DECLARE_NOT_AGGREGATABLE(CMyCircle)
BEGIN_COM_MAP(CMyCircle)
COM_INTERFACE_ENTRY(IMyCircle)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()
DECLARE_PROTECT_FINAL_CONSTRUCT()
HRESULT FinalConstruct()
{
return S_OK;
}
void FinalRelease()
{
}
public:
public:
STDMETHOD(get_XCenter)(double* pVal);
};
// Create a local instance of COM object CMyCircle.
double x;
CComObject<CMyCircle>* pCircle;
HRESULT hRes = CComObject<CMyCircle>::CreateInstance(&pCircle);
ATLASSERT(SUCCEEDED(hRes));
// Increment reference count immediately
pCircle->AddRef();
// Access method of COM object
hRes = pCircle->get_XCenter(&x);
// Decrement reference count when done
pCircle->Release();
pCircle = NULL;
CComObject::QueryInterface
Recupera um ponteiro para a interface solicitada.
STDMETHOD(QueryInterface)(REFIID iid, void** ppvObject);
template <class Q>
HRESULT STDMETHODCALLTYPE QueryInterface(Q** pp);
Parâmetros
IID
[dentro] O identificador da interface a ser solicitada.
ppvObject
[fora] Um apontador para o ponteiro de interface identificado por iid. Se o objeto não suportar esta interface, o ppvObject é definido como NULL.
pp
[fora] Um apontador para o ponteiro de interface identificado pelo tipo Q. Se o objeto não suportar esta interface, pp é definido como NULL.
Valor de retorno
Um valor HRESULT padrão.
CComObject::Release
Diminui a contagem de referência no objeto.
STDMETHOD_(ULONG, Release)();
Valor de retorno
Esta função devolve a nova contagem de referências decrementada no objeto. Em compilações de depuração, o valor de retorno pode ser útil para diagnósticos ou testes. Em builds que não são de depuração, Release devolve sempre 0.
Consulte também
Classe CComAggObject
Classe CComPolyObject
DECLARE_AGGREGATABLE
DECLARE_NOT_AGGREGATABLE
Visão geral da classe