WPF-Control in MFC-Dialog
-
Hallo!
Ich habe eine MFC-DLL (kompiliert mit /clr) und eine .NET-DLL, die ein WPF-Control zur Verfügung stellt. Diese Control möchte ich im MFC-Dialog anzeigen. Das Beispielprojekt mit der Anim-Clock funktioniert bei mir, allerdings nur in diesem Projekt. Wenn ich die .NET DLL in mein "großes" Projekt einbaue, geht es nicht. Ich _muss_ Visual Studio 2005 verwenden, habe aber die WPF-Extensions installiert.
Es kann kompiliert werden und andere Aufrufe in die CLR gehen auch. Zum Beispiel diese hier:
array<System::String^> ^files = System::IO::Directory::GetFiles(_T("C:\\"));
Also nehme ich mal an, dass ich die MFC-DLL korrekt eingestellt habe.
Was nicht geht, ist das Hosten des WPF-Controls:HWND GetHwnd(HWND parent, int x, int y, int width, int height) { System::Windows::Interop::HwndSourceParameters^ sourceParams = gcnew System::Windows::Interop::HwndSourceParameters ("IDSearch"); sourceParams->PositionX = x; sourceParams->PositionY = y; sourceParams->Height = height; sourceParams->Width = width; sourceParams->ParentWindow = IntPtr(parent); sourceParams->WindowStyle = WS_VISIBLE | WS_CHILD; Globals::gHwndSource = gcnew System::Windows::Interop::HwndSource(*sourceParams); /// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Globals::gwcIDSearch = gcnew WPFControls::AnimClock1(); FrameworkElement^ myPage = Globals::gwcIDSearch; Globals::gHwndSource->RootVisual = myPage; return (HWND) Globals::gHwndSource->Handle.ToPointer(); }
Es kommt allerdings keine Exception oder so, sondern ich kann in den obigen Code nicht hineinsteppen (Debugger), sobald die Zeilen ab XXXX mitkompiliert werden. Debugger ist auf Mixed eingestellt und funktioniert auch, weil ja andere CLR-Aufrufe gehen. Angezeigt wird das Control dann natürlich auch nicht.
Hat jemand eine Idee was ich falsch gemacht habe? Nur zur Info, das Projekt hat keine Exe sondern nur DLLs die als Plugins in ein anderes Programm geladen werden.
Danke
Markus