1

我们的应用程序有一个浮动在文档窗口顶部的工具窗口。它对工具窗口使用以下样式:

args.style = WS_POPUPWINDOW | WS_CAPTION;
args.exstyle = WS_EX_TOPMOST | WS_EX_TOOLWINDOW;

问题是这样的:我基本上希望工具窗口忽略鼠标滚轮事件并将其传递给它下面的任何窗口。因此,当鼠标指针位于工具窗口上方时,用户应该能够滚动文档(或另一个窗口的内容)。

有没有一种简单的方法来实现这一点,还是我必须以艰难的方式实现这一点?(在鼠标下找到没有设置 WS_EX_TOPMOST 的窗口,然后给它发送一个伪造的 WM_MOUSEWHEEL 事件。)

这是一个 C++ 项目,但我认为它在 C# 中非常相似。

编辑:为了澄清事情,Windows 将 WM_MOUSEWHEEL 发送到具有键盘焦点的窗口,而不考虑光标的位置。我想更改它并将事件重新路由到光标下的窗口。我在 WindowFromPoint 和 PostMessage 的帮助下实现了这一点,在我们引入工具窗口之前,它们运行良好。我基本上需要一个函数 WindowFromPointButIgnoreTopMostWindows ...

4

0 回答 0