[英]WM_KEYDOWN confusion
當我按下CTRL + S時,我正試圖讓我的應用程序執行某些操作。 我只是不確定W和L參數如何為WM_KEYDOWN工作。 MSDN有一些我不確定的位字段。 如何檢測CTRL和S? 謝謝
如果除了hWnd之外的另一個控件有焦點,我該怎么辦?
嗯, 這是虛擬鍵碼的大清單。
CTRL-S將作為2個WM_KEYDOWN
消息發送 - 當按下ctrl鍵( VK_LCONTROL
或VK_RCONTROL
)時出現消息,然后是“S”鍵的0x53
。
不是處理兩個消息,而是等待'S'按下的按鍵消息然后使用魔術值VK_CONTROL調用GetKeyState (另外你需要單獨測試左和右控制鍵)以查看是否按下了S按住CTRL鍵。
-
顯然,鍵盤消息直接發送到具有焦點的窗口。 要使加速器組合在應用程序范圍內工作,您需要在將消息分派到焦點窗口之前檢查消息 - 即在消息泵中。 請參閱TranslateAccelerator的文檔。
如果要處理系統范圍的按鍵,則另一個答案指向熱鍵api。
當WPARAM等於CTRL VKcode時,則在對象的狀態中設置bool。 然后,當S出現時,如果是Ctrlbool,你就有了CTRL-S。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.