1

比在我的 WPF 应用程序中托管 WinForms 用户控件更进一步,我实际上托管的是 Delphi 表单,即顶级窗口。我通过博客文章How To Host Top-Level HWNDs In WPF中的巫术来做到这一点。

几乎所有东西都能完美运行。我发送了一个在 Delphi 中构建的 COM 服务器,一个菜单路径字符串,它发送回一个窗口句柄,我将它传递给博客中描述的主机控件。Delphi 窗口几乎可以正确接收所有事件(更确切地说是 Windows 消息),而无需我进行任何干预。

唯一的问题是按钮。他们很好地收到了点击事件/消息,并且可以正常工作,但是现在 Delphi 的家伙已经为按钮添加了新图标,并且每个按钮都有一个活动图标、一个悬停图标和一个点击图标。他们没有收到任何应该更改这些图标的消息。为什么除了这些之外几乎所有消息都有效?我可以阅读和/或做些什么来尝试纠正这个问题?

4

1 回答 1

0

在 MouseOver 事件中,发送一些用户消息并捕获它。

WPF 中的 WPF 和 Win32 互操作
HWND > 输入行为的显着差异

当鼠标在 HwndHost 上时,您的应用程序不会接收 WPF 鼠标事件,并且 WPF 属性 IsMouseOver 的值将为 false。

于 2014-07-10T23:00:24.150 回答