Freigeben über


CComObject::CreateInstance

Diese statische Funktion ermöglicht es Ihnen, ein neues Objekt CComObject<Base>, ohne den Aufwand von CoCreateInstance zu erstellen.

static HRESULT WINAPI CreateInstance(
   CComObject< Base >** pp 
);

Parameter

  • pp
    [out] Ein Zeiger auf einen Zeiger CComObject<Base>.Wenn CreateInstance fehlschlägt, wird pp zu NULL festgelegt.

Rückgabewert

Ein HRESULT-Standardwert.

Hinweise

Das zurückgegebene Objekt verfügt über einen Verweiszähler Null, sodass Aufruf AddRef sofort, dann anhand Release, den Verweis auf dem Objektzeiger freizugeben, wenn Sie fertig sind.

Wenn Sie keinen Direktzugriff auf das Objekt benötigen, aber dennoch ein neues Objekt ohne den Aufwand von CoCreateInstance erstellen möchten, verwenden Sie stattdessen CComCoClass::CreateInstance.

Beispiel

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;

Anforderungen

Header: möchten

Siehe auch

Referenz

CComObject-Klasse