CComObject::CreateInstance
Ta funkcja statycznych pozwala utworzyć nowy CComObject <Base> obiektu bez potrzeby CoCreateInstance.
static HRESULT WINAPI CreateInstance(
CComObject< Base >** pp
);
Parametry
- pp
[out] Wskaźnik do CComObject <Base> wskaźnik.Jeśli CreateInstance się nie powiedzie, pp jest ustawiona na NULL.
Wartość zwracana
Standard HRESULT wartości.
Uwagi
Obiekt zwrócony ma zerowej liczbie odwołań, więc wywołanie AddRef natychmiast, następnie użyj wersji zwolnić odniesienia na wskaźnik do obiektu po zakończeniu.
Jeśli nie muszą bezpośredni dostęp do obiektu, ale nadal chcesz utworzyć nowy obiekt bez CoCreateInstance, użyj CComCoClass::CreateInstance zamiast.
Przykład
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;
Wymagania
Nagłówek: atlcom.h