标准的鼠标拖放的难题
二进制脑袋 2021-01-29 03:49:37 假定有一个源窗口,简称Win_S。要鼠标左键拖动到的目的窗口,简称Win_D。桌面上其它窗口和位置,简称Win_O。鼠标的光标(cursor)形状,如果是进入目的窗口Win_D,光标形状简称为Cursor_OK,如果是其它窗口Win_O(还包括源窗口Win_S),光标形状简称为Cursor_NO,无拖放的正常鼠标光标形状简称为Cursor_Normal。
现在的问题是:拖动发生后,1、如果在Win_S中不捕获鼠标,则Win_S不能检测到鼠标移出Win_S后(包括鼠标到Win_D和Win_O)的鼠标左键释放(弹起)的消息,把光标恢复为Cursor_Normal;2、如果在Win_S中捕获鼠标,这样虽然可以在鼠标左键在任意位置释放(弹起)后恢复光标形状Cursor_Normal,但这种情况下,拖动期间,其它窗口(Win_D和Win_O),则不能响应鼠标消息,Win_D中也就不能根据拖放到此而响应事件了。
这个两难问题应该是一个标准的鼠标跨窗口拖、放操作遇到的典型问题,请解决过类似问题的朋友提供些帮助。