CWnd* über COM
-
Hallo Leute,
ch habe eine Ausführbare Hauptanwendung welche eine von mir geschriebene COM dll einbindet und über ein Interface Daten austauscht.
Ich möchte gerne den CWnd Pointer meiner Rahmenanwendung über eine Interface Funktion an die COM dll übergeben.
HRESULT GetMainWindow([out] CWnd* mainWindow);Da motzt der midl compiler aber.
Wie könnte denn so was gehen?
-
MFC-Klassen per COM austauschen würde ich nicht machen. IDL erlaubt zwar die Definition von Datentypen aber Klassen oder Zeiger auf Klassen würde ich nicht damit austauschen, da IDL ja eine Schnittstellensprache ist und nicht jeder der COM kennt auch die MFC-Klassen kennt ( z.B. VisualBasic ).
Du kannst z.B. das Fensterhandle des CWnd - Objektes austauschen. Dies erhälst du mit CWnd::GetSafeHWnd() zurück. Aus einem HWND - Handle kannst du mit CWnd::FromHandle() oder CWnd::FromHandlePermanent() wieder das entsprechende CWnd* - Objekt ermitteln.
HRESULT GetMainWindow([out] HWND* mainWindow);