我已经使用WS_EX_NOACTIVATE标志创build了一个窗口,并且在单击窗口时不会占用焦点的情况下效果很好。 但是,当我拖动窗口或尝试调整它的大小时,它不会重新绘制窗口,因为您正在移动窗口并调整窗口的大小,只有在释放鼠标button的最后才会重新绘制窗口。 有没有解决的办法? 我希望看到窗口,因为我正在调整它。 我搜查了很多文件,但是我仍然没有find解决办法
这是一个Windows错误。 你需要在WM_MOVING
上调用SetWindowPos(hwnd, 0, x, y, width, height, 0)
。 要设置的坐标在lParam
中给出,这是一个RECT*
。
请注意,这样做将激活拥有的窗口并停用所有者,这不是您想要的( SWP_NOACTIVATE
也不起作用)。
为了避免这种情况,您需要在拥有的窗口上设置WS_CHILD。 但是在你通过SetWindowLong()创建窗口之后设置它,否则你拥有的窗口将被剪裁,就像任何子窗口一样。
而且,你可能已经想通了,这只适用于WS_EX_TOOLWINDOW
ex样式的窗口。 我无法使拥有的窗口停用其他任何不包含WS_EX_TOOLWINDOW
样式组合。
那是你的winapi 🙁
如果你需要一个单击时不需要关注的窗口,但仍然可以与之交互,则需要处理WM_MOUSEACTIVATE ,并返回MA_NOACTIVATE
。
Raymond Chen已经发布了更多的信息和完整的示例代码。 请参阅如何获得拒绝激活但仍接收指针输入的窗口?