【发布时间】:2011-04-09 04:07:49
【问题描述】:
我有一个基于混合了 MFC、WTL、user32 和其他一些技术的带有 GUI 的 win32 应用程序怪物。我需要添加另一个顶级窗口,我想给 WPF 一个机会。
您能帮我确定在 win32 应用程序中托管 WPF 窗口所需的步骤吗?欢迎提供详细信息。
【问题讨论】:
我有一个基于混合了 MFC、WTL、user32 和其他一些技术的带有 GUI 的 win32 应用程序怪物。我需要添加另一个顶级窗口,我想给 WPF 一个机会。
您能帮我确定在 win32 应用程序中托管 WPF 窗口所需的步骤吗?欢迎提供详细信息。
【问题讨论】:
很抱歉给出了陈词滥调的答案,但我无法比 MSDN 上的解释更好地解释它: Hosting WPF Content in a Microsoft Win32 Window,Walkthrough: Hosting a WPF Clock in Win32。您可能还对 MSDN Code Gallery 上的 WPF 文档示例感兴趣,或者查看他们的 mind-mapped version。
【讨论】:
请记住,如果它是您所追求的顶级窗口(而不是嵌入在另一个窗口中的窗口),您可以简单地从托管 C++ 创建一个新的 Window 派生 WPF 窗口。
IE,或者 1) 创建一个 C++/CLI 库来引用您的 WPF 库并从您的非托管代码中调用它或 2) 添加 /clr 库设置(不推荐,由于性能影响)并添加对您的WPF 库。然后只需调用:
#include <vcclr.h>
gcroot<MyWindow^> newWin = gcnew MyWindow();
newWin->Show();
【讨论】: