我想让用户只在桌面的工作区域内拖动我的 Win32 窗口。换句话说,他们不应该让窗口的任何部分延伸到监视器之外,也不应该让窗口与任务栏重叠。
我想以一种确实会导致口吃的方式来做。处理 WM_MOVE 消息并调用 MoveWindow() 以在窗口关闭时重新定位窗口有效,但我不喜欢由 MoveWindow() 引起的闪烁效果。
我还尝试处理 WM_MOVING,它通过在实际发生移动之前更改目标矩形来防止调用 MoveWindow() 的需要。这解决了闪烁问题,但我遇到的另一个问题是,当发生拖动时光标有时会离开窗口,从而允许用户在光标甚至不在窗口内时拖动窗口。
如何在不遇到这些问题的情况下限制我的窗口?