我有一个遗留的C++ Win32应用程序,使用WPF窗口进行扩展是可行的。
但我想要的是将WPF窗口作为主窗口,而不仅仅是任何旧窗口,而是Prism Shell窗口。
所以,在我的遗留C++项目中,我想添加引导程序、Shell窗口、MEF加载器以及所有必要的功能。在其中,我想放置一些命令,当它们需要时打开遗留的Win32窗口。
现在,在Win32应用程序中打开WPF窗口很简单,我只需要使用:
但是我如何在WPF应用程序中打开一个win32窗口?win32窗口将需要一个消息泵循环,但我应该把它放在哪里呢?
但我想要的是将WPF窗口作为主窗口,而不仅仅是任何旧窗口,而是Prism Shell窗口。
所以,在我的遗留C++项目中,我想添加引导程序、Shell窗口、MEF加载器以及所有必要的功能。在其中,我想放置一些命令,当它们需要时打开遗留的Win32窗口。
现在,在Win32应用程序中打开WPF窗口很简单,我只需要使用:
System::Windows::Forms::Integration::ElementHost::EnableModelessKeyboardInterop(mywindow);
但是我如何在WPF应用程序中打开一个win32窗口?win32窗口将需要一个消息泵循环,但我应该把它放在哪里呢?
MSG msg;
while (GetMessage(&msg, NULL, NULL, NULL))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
我能否为循环创建任何新线程?还是需要这方面的Interop帮助程序?
或者我的想法纯粹是疯狂的?