4

我已经做了一些搜索,但我找不到确切的答案。在我的 C# WPF 应用程序中,我获取 HWND 指针并将其传递给 C dll。然后该 C dll 尝试使用 GDI 调用在我的窗口上呈现各种覆盖。没有错误,但什么也没有出现。如果我切换到 Windows 窗体,则 dll 可以很好地渲染它。如果我托管一个 WindowsFormHost 控件并从那里使用 hwnd,我将获得相同的效果。我已经看到有关 HwndHost 控件的信息,但它看起来并不像我想要的那样。也许对这种控制有更多了解的人可以告诉我不同​​的说法。我在某处读到用于 DirectX 渲染(如 WPF)的 hwnd 也不能使用 GDI。这是否使我的情况变得不可能?我可以通过在 WPF 窗口上覆盖一个无边框的表单来伪造它,但显然这不会太漂亮。

4

1 回答 1

5

您不能将 WPF 和 GDI 渲染到同一个 hwnd,但您可以轻松地在 WPF 应用程序中拥有一个子 hwnd,并让 GDI 渲染到其中。看看 HwndHost 就是这样做的。本文中的“在 WPF 中托管 Microsoft Win32 窗口”部分提供了更多详细信息。它还讨论了在执行此类互操作时会遇到的各种问题(如空域)。

于 2011-02-04T20:27:05.463 回答