1
我正在实现可以启动拖动事件的自定义控件。当用户通过处理WM_LBUTTONDOWN
并且呼叫SetCapture()
按下鼠标左键时,我开始拖动。这会导致所有鼠标事件,即使是我的控制客户区域外的鼠标事件,都会发送到它,完全按照我的意愿。捕获鼠标被捕获但窗口未聚焦的键盘事件(Win32)
我还希望能够捕获按键,这样如果用户按ESC键(VK_ESCAPE
),我可以取消拖动。由于我的控制没有键盘焦点(我不希望它从控制中窃取焦点),所以我不能听WM_KEYDOWN
。由于其他原因太复杂无法解释,我也不希望使用DragDetect()
函数。
我的控件在拖动过程中如何找到ESC按键?
短期使用全局键盘钩子的,我不认为你可以。 – edtheprogrammerguy
无论您的应用程序中哪个控件具有焦点,“WM_KEYDOWN”消息都会进入消息循环,因此您可以直接测试它们,并在看到退出键时中止拖动。 –