1
我正在實現可以啓動拖動事件的自定義控件。當用戶通過處理WM_LBUTTONDOWN
並且呼叫SetCapture()
按下鼠標左鍵時,我開始拖動。這會導致所有鼠標事件,即使是我的控制客戶區域外的鼠標事件,都會發送到它,完全按照我的意願。捕獲鼠標被捕獲但窗口未聚焦的鍵盤事件(Win32)
我還希望能夠捕獲按鍵,這樣如果用戶按ESC鍵(VK_ESCAPE
),我可以取消拖動。由於我的控制沒有鍵盤焦點(我不希望它從控制中竊取焦點),所以我不能聽WM_KEYDOWN
。由於其他原因太複雜無法解釋,我也不希望使用DragDetect()
函數。
我的控件在拖動過程中如何找到ESC按鍵?
短期使用全局鍵盤鉤子的,我不認爲你可以。 – edtheprogrammerguy
無論您的應用程序中哪個控件具有焦點,「WM_KEYDOWN」消息都會進入消息循環,因此您可以直接測試它們,並在看到退出鍵時中止拖動。 –