【问题标题】:Native Win32 window in WPF ControlWPF 控件中的本机 Win32 窗口
【发布时间】:2011-11-21 12:38:46
【问题描述】:

我正在开发一个需要宿主本机 Win32 窗口的应用程序,但不知何故我不知道该怎么做。

我需要创建一个可以在其上显示本机 Win32 控件的 WPF 对话框窗口。此对话框窗口上也将包含 WPF 控件,因此我正在寻找某种可以获取 HWND 的 Grid 并将其发送到非托管 C++ 控件,以便它可以在其上绘制。 这可能吗?

我不需要知道该表面发生了什么,只需要让 C++ dll 在其上绘制,我需要做的就是传递具有适当大小的 HWND(我知道)。

我对 WPF 有点陌生(曾经进行 win32 编程)并且非常迷茫(但我现在如何将它与 C# .NET 等接口)

如果您能给我任何提示,那就太好了:)

【问题讨论】:

    标签: c# .net c++ wpf winapi


    【解决方案1】:

    您可以按照此处的说明/步骤开始:Hosting Win32 Content in WPF

    来自文章介绍:

    Win32 在 Windows Presentation Framework (HwndHost) 中的演练

    要在 WPF 应用程序中重用 Win32 内容,请使用 HwndHost,它是 使 HWND 看起来像 WPF 内容的控件。像 HwndSource 一样, HwndHost 使用简单:从 HwndHost 派生并实现 BuildWindowCore 和 DestroyWindowCore 方法,然后实例化你的 HwndHost 派生类并将其放置在您的 WPF 应用程序中。

    如果您的 Win32 逻辑已经打包为控件,那么您的 BuildWindowCore 实现只不过是调用 创建窗口。

    如果您有具体问题,请在 SO 中提问,人们会在具体问题上为您提供帮助。

    【讨论】:

    • 这正是我一直在寻找的 :) 我的对话窗口现在已启动并运行。非常感谢!
    • 我可以使用HwndHost 在典型的 Windows 窗体应用程序中托管吗?
    • @Desolator,是的,因为WindowsFormsHost 继承自 HwndHost。
    猜你喜欢
    • 2018-09-25
    • 1970-01-01
    • 2011-03-14
    • 2020-10-08
    • 2013-04-17
    • 2012-11-25
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多