使用 WS_EX_NOACTIVATE 标志创建一个窗口,但在我释放鼠标之前无法拖动它
Create a window using the WS_EX_NOACTIVATE flag ,but it can't be dragged until I release the mouse
我使用WS_EX_NOACTIVATE标志创建了一个窗口,当您单击该窗口时,它的工作效果很好。然而,当我拖动窗口或尝试调整它的大小时,它不会重新绘制窗口,因为你正在移动和调整它的大小,只有在最后,一旦你释放鼠标按钮。有办法解决这个问题吗?我想在调整窗口大小时看到它。
如果你需要一个在点击时不集中的窗口,但仍然可以与之交互,你需要处理WM_MOUSEACTIVATE,并返回MA_NOACTIVATE
。
附加信息和完整的工作示例代码已由Raymond Chen发布。请参阅我如何拥有一个拒绝激活但仍接收指针输入的窗口?
这是Windows的bug。您需要呼叫WM_MOVING
上的SetWindowPos(hwnd, 0, x, y, width, height, 0)
。要设置的坐标在lParam
中给出,这是RECT*
。
请注意,这样做将激活已拥有的窗口并停用所有者,这不是您想要的(并且SWP_NOACTIVATE
也没有效果)。
为了避免这种情况,您需要在自己的窗口上设置WS_CHILD。但是通过SetWindowLong()将设置在创建窗口之后,否则您自己的窗口将被剪切,就像任何子窗口一样。
并且,正如您可能已经发现的那样,这只适用于WS_EX_TOOLWINDOW
ex样式的windows。我无法使自己的窗口保持停用与任何其他风格的组合,不包括WS_EX_TOOLWINDOW
。
winapi:
相关文章:
- 释放错误后堆使用
- G锁定铸造到基础上会释放模拟行为
- 在将变量声明为引用时,堆在释放后使用
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- WinAPI挂钩鼠标
- 将鼠标悬停在问题上时与预期">"相关的代码错误
- 跟踪滚动条上的鼠标事件
- SendInput()鼠标移动计算
- 正在理解智能指针,但出现错误:未分配正在释放的指针
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- 如何在鼠标挂钩过程中检测拖动
- C++双重释放或损坏(out)
- 如何获得鼠标光标连接时按下左键单击和在C++中释放左键单击时?
- QT/c++ 如何检查全局是鼠标按下还是释放?
- 在OpenGL中,如何将鼠标跟随更改为鼠标单击,拖动并移动释放?
- SDL_MOUSEBUTTONUP甚至在释放鼠标按钮之前发生
- 在mousePressEvent期间,Qt5/C++释放鼠标
- C++在鼠标释放时录制
- 使用 WS_EX_NOACTIVATE 标志创建一个窗口,但在我释放鼠标之前无法拖动它
- 如何在不释放鼠标按钮的情况下更改所选文本