mikrocontroller.net

Forum: PC-Programmierung C++ / CLI COM Objekt


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Jens D. (gandalf1983)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich stehe voll aufm schlauch.

ich habe mir ein CLI Projekt.
Nun möchte ich aus einem IDispatch Pointer, das ComObject übertragen.
  void EventHandler::fireCreateInstance(std::string status, LPDISPATCH params)
  {
    EventHandlerWrapper^ eventHandlerWrapper = gcnew EventHandlerWrapper();
    eventHandlerWrapper->fireCreateInstance(status, (InteropComObject^)params);
  }

  void EventHandlerWrapper::fireCreateInstance(std::string status, InteropComObject^ params)
  {
    Buddy::Instance->MEventGuardian_CreateInstance(gcnew String(status.c_str()), params);
  }

ich hab mir so was gebaut, der EventHandler::fireCreateInstance wird via 
declspec exportiert. und der EventHandlerWrapper::fireCreateInstance hat 
die kennung __clrcall weil man dies anscheinend nicht kompinieren darf.

nun hab ich das Problem das ich das LPDISPATCH nicht in das 
InteropComObject bekomme. Was muss ich hier tun, ich sitze da zeit 
wochen dran und komme nicht voran.

von Jens D. (gandalf1983)


Bewertung
0 lesenswert
nicht lesenswert
Hab die Lösung gefunden
  void EventHandler::fireCreateInstance(std::string status, LPDISPATCH params)
  {
    EventHandlerWrapper^ eventHandlerWrapper = gcnew EventHandlerWrapper();
    
    Object^ cSetup = Marshal::GetObjectForIUnknown(IntPtr(params));
    eventHandlerWrapper->fireCreateInstance(status, cSetup);
  }

  void EventHandlerWrapper::fireCreateInstance(std::string status, Object^ params)
  {
    Buddy::Instance->MEventGuardian_CreateInstance(gcnew String(status.c_str()), params);
  }

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.