我们的应用程序有一个浮动在文档窗口顶部的工具窗口。它对工具窗口使用以下样式:
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 ...