C++ / CLI COM Objekt

OP #6181069
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.
OP #6181108
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
  }

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren