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


von Jens D. (gandalf1983)


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.
1
  void EventHandler::fireCreateInstance(std::string status, LPDISPATCH params)
2
  {
3
    EventHandlerWrapper^ eventHandlerWrapper = gcnew EventHandlerWrapper();
4
    eventHandlerWrapper->fireCreateInstance(status, (InteropComObject^)params);
5
  }
6
7
  void EventHandlerWrapper::fireCreateInstance(std::string status, InteropComObject^ params)
8
  {
9
    Buddy::Instance->MEventGuardian_CreateInstance(gcnew String(status.c_str()), params);
10
  }

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)


Lesenswert?

Hab die Lösung gefunden
1
  void EventHandler::fireCreateInstance(std::string status, LPDISPATCH params)
2
  {
3
    EventHandlerWrapper^ eventHandlerWrapper = gcnew EventHandlerWrapper();
4
    
5
    Object^ cSetup = Marshal::GetObjectForIUnknown(IntPtr(params));
6
    eventHandlerWrapper->fireCreateInstance(status, cSetup);
7
  }
8
9
  void EventHandlerWrapper::fireCreateInstance(std::string status, Object^ params)
10
  {
11
    Buddy::Instance->MEventGuardian_CreateInstance(gcnew String(status.c_str()), params);
12
  }

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.