Sdílet prostřednictvím


ptr::CreateInstance

Vytvoří instanci objektu COM v com::ptr.

void CreateInstance(
   System::String ^ progid,
   LPUNKNOWN pouter,
   DWORD cls_context
);
void CreateInstance(
   System::String ^ progid,
   LPUNKNOWN pouter
);
void CreateInstance(
   System::String ^ progid
);
void CreateInstance(
   const wchar_t * progid,
   LPUNKNOWN pouter,
   DWORD cls_context
);
void CreateInstance(
   const wchar_t * progid,
   LPUNKNOWN pouter
);
void CreateInstance(
   const wchar_t * progid
);
void CreateInstance(
   REFCLSID rclsid,
   LPUNKNOWN pouter,
   DWORD cls_context
);
void CreateInstance(
   REFCLSID rclsid,
   LPUNKNOWN pouter
);
void CreateInstance(
   REFCLSID rclsid
);

Parametry

  • progid
    A ProgID string.

  • pouter
    Ukazatel na agregovaný objekt IUnknown rozhraní (řízení IUnknown).Pokud pouter není zadán, NULL se používá.

  • cls_context
    Kontext, ve kterém se spustí kód, který spravuje nově vytvořený objekt.Hodnoty jsou převzaty z CLSCTX výčtu.Pokud cls_context není zadán, hodnota se používá CLSCTX_ALL.

  • rclsid
    CLSIDpřidružené data a kód, který bude použit k vytvoření objektu.

Výjimky

Pokud com::ptr odkaz na objekt COM již vlastní CreateInstance vyvolá InvalidOperationException.

Tato funkce volá CoCreateInstance a ThrowExceptionForHR převést všechny chyby HRESULT na příslušné výjimky.

Poznámky

CreateInstancepoužívá CoCreateInstance k vytvoření nové instance určeného objektu, identifikovány buď z identifikátor ProgID a identifikátor CLSID.com::ptr Odkazuje na nově vytvořený objekt a automaticky uvolní po zničení všech vlastněných odkazy.

Příklad

Tento příklad implementuje třídu CLR, která používá com::ptr jeho soukromý člen zalomení IXMLDOMDocument objektu.Konstruktory tříd použít dvě různé formy CreateInstance k vytvoření objektu dokumentu od ProgID nebo identifikátor CLSID plus CLSCTX.

// comptr_createinstance.cpp
// compile with: /clr /link msxml2.lib
#include <msxml2.h>
#include <msclr\com\ptr.h>

#import <msxml3.dll> raw_interfaces_only

using namespace System;
using namespace System::Runtime::InteropServices;
using namespace msclr;

// a ref class that uses a com::ptr to contain an 
// IXMLDOMDocument object
ref class XmlDocument {
public:
   // construct the internal com::ptr with a null interface
   // and use CreateInstance to fill it
   XmlDocument(String^ progid) {
      m_ptrDoc.CreateInstance(progid);   
   }
   XmlDocument(REFCLSID clsid, DWORD clsctx) {
      m_ptrDoc.CreateInstance(clsid, NULL, clsctx);
   }

   // note that the destructor will call the com::ptr destructor
   // and automatically release the reference to the COM object

private:
   com::ptr<IXMLDOMDocument> m_ptrDoc;
};

// use the ref class to handle an XML DOM Document object
int main() {
   try {
      // create the class from a progid string
      XmlDocument doc1("Msxml2.DOMDocument.3.0");

      // or from a clsid with specific CLSCTX
      XmlDocument doc2(CLSID_DOMDocument30, CLSCTX_INPROC_SERVER);
   }
   catch (Exception^ e) {
      Console::WriteLine(e);   
   }
}

Požadavky

Soubor hlaviček<msclr\com\ptr.h>

Obor názvů msclr::com

Viz také

Další zdroje

ptr – členové