当我按下CTRL + S时,我正试图让我的应用程序执行某些操作.我只是不确定W和L参数如何为WM_KEYDOWN工作.MSDN有一些我不确定的位字段.如何检测CTRL和S?谢谢
如果除了hWnd之外的另一个控件有焦点,我该怎么办?
Chr*_*cke 17
嗯,这是虚拟键码的大清单.
CTRL-S将作为2条WM_KEYDOWN消息发送 - 当按下ctrl键(VK_LCONTROL或VK_RCONTROL)后面跟一条0x53"S"键时的消息.
不是处理两个消息,而是等待'S'按下的按键消息然后使用魔术值VK_CONTROL 调用GetKeyState(另外你需要单独测试左和右控制键)以查看是否按下了S按住CTRL键.
-
显然,键盘消息直接发送到具有焦点的窗口.要使加速器组合在应用程序范围内工作,您需要在将消息分派到焦点窗口之前检查消息 - 即在消息泵中.请参阅TranslateAccelerator的文档.
如果要处理系统范围的按键,则另一个答案指向热键api.