Sdílet prostřednictvím


CComObject::CreateInstance

Statická funkce umožňuje vytvořit nový CComObject <Base> objektu bez režie CoCreateInstance.

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

Parametry

  • pp
    [výstup] Ukazatel CComObject <Base> ukazatel.Pokud CreateInstance neúspěšné, pp je nastavena na NULL.

Vrácená hodnota

Standard HRESULT hodnotu.

Poznámky

Objekt vrácený má nulový počet odkaz, tak volání AddRef okamžitě, použijte vydání po dokončení volného odkaz na ukazatel objektu.

Pokud potřebujete není přímý přístup k objektu, ale přesto chcete vytvořit nový objekt bez režie CoCreateInstance , použijte CComCoClass::CreateInstance místo.

Příklad

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;

Požadavky

Záhlaví: atlcom.h

Viz také

Referenční dokumentace

Třída CComObject