将 WPF 窗口添加到 Win32 应用程序

Posted

技术标签:

【中文标题】将 WPF 窗口添加到 Win32 应用程序【英文标题】:Adding WPF window to Win32 application 【发布时间】:2011-04-09 04:07:49 【问题描述】:

我有一个基于混合了 MFC、WTL、user32 和其他一些技术的带有 GUI 的 win32 应用程序怪物。我需要添加另一个***窗口,我想给 WPF 一个机会。

您能帮我确定在 win32 应用程序中托管 WPF 窗口所需的步骤吗?欢迎提供详细信息。

【问题讨论】:

【参考方案1】:

很抱歉给出了陈词滥调的答案,但我无法比 MSDN 上的解释更好地解释它: Hosting WPF Content in a Microsoft Win32 Window,Walkthrough: Hosting a WPF Clock in Win32。您可能还对 MSDN Code Gallery 上的 WPF 文档示例感兴趣,或者查看他们的 mind-mapped version。

【讨论】:

【参考方案2】:

请记住,如果它是您所追求的***窗口(而不是嵌入在另一个窗口中的窗口),您可以简单地从托管 C++ 创建一个新的 Window 派生 WPF 窗口。

IE,或者 1) 创建一个 C++/CLI 库来引用您的 WPF 库并从您的非托管代码中调用它或 2) 添加 /clr 库设置(不推荐,由于性能影响)并添加对您的WPF 库。然后只需调用:

#include <vcclr.h>

gcroot<MyWindow^> newWin = gcnew MyWindow();
newWin->Show();

【讨论】:

以上是关于将 WPF 窗口添加到 Win32 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

WPF与Win32互操作

Win32 使用 SetCurrentProcessExplicitAppUserModelID 关联多个进程 在任务栏合并 WPF 多进程窗口

将鼠标事件发送到非活动和隐藏的窗口/WPF 窗体

WPF OpenFileDialog 与 Win32 父窗口;窗口关闭时没有重新获得焦点

通过来自64位exe的OLE分派启动32位exe

将 MenuItem 添加到已经存在的 WPF 标题菜单