【发布时间】:2015-10-13 02:55:37
【问题描述】:
如果有人正在研究 win32 API。请查看以下问题。 在win32编程中同时按下修饰键(alt + ctrl + shift)时,我需要调用一个函数。但是当同时按下修饰键时,我不知道如何处理此事件。 如果有人有任何想法,请发布。
【问题讨论】:
-
查看
RegisterHotKey()和WM_HOTKEY窗口消息。
如果有人正在研究 win32 API。请查看以下问题。 在win32编程中同时按下修饰键(alt + ctrl + shift)时,我需要调用一个函数。但是当同时按下修饰键时,我不知道如何处理此事件。 如果有人有任何想法,请发布。
【问题讨论】:
RegisterHotKey() 和WM_HOTKEY 窗口消息。
要获取密钥的状态,有一个 API GetKeyState。借助此功能,您可以检查键是向下还是向上。
例如:
if (GetKeyState(VK_SHIFT)& 0x8000)
//Key is pressed
你也可以这样组合检查:
if (GetKeyState(VK_SHIFT)& 0x8000 && GetKeyState(VK_CONTROL)& 0x8000)
//ctrl+shift key is pressed.
【讨论】:
(GetKeyState(VK_SHIFT) & 0x8000) 实际上意味着 SHIFT 键被锁定。不要混用 keypress 和 keydown。
您应该处理WM_KEYDOWN 和WM_KEYUP 消息,并跟踪所有这些键的状态(向上或向下):VK_SHIFT、VK_CONTROL、VK_MENU。
【讨论】: