CComObject::CreateInstance
Esta función estática permite crear un nuevo objeto de CComObject<Base> , sin la sobrecarga de CoCreateInstance.
static HRESULT WINAPI CreateInstance(
CComObject< Base >** pp
);
Parámetros
- pp
[out] un puntero a un puntero de CComObject<Base> . Si CreateInstance no se realiza correctamente, pp se establece en NULL.
Valor devuelto
un valor estándar de HRESULT .
Comentarios
El objeto devuelto tiene un recuento de referencia de cero, por lo que la llamada AddRef inmediatamente, después uso Liberar de liberar la referencia en el puntero de objeto cuando haya terminado.
Si no necesita acceso directo al objeto, pero todavía desea crear un nuevo objeto sin la sobrecarga de CoCreateInstance, utilice CComCoClass:: CreateInstance en su lugar.
Ejemplo
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;
Requisitos
encabezado: atlcom.h