源博客地址:http://blog.csdn.net/kencaber/article/details/51417871

响应WM_KEYDOWN消息时发现`~快捷键无效,设置断点发现得到的按键消息根本不是VK_OEM_3 192。由于我观察到输入法是打开的,于是关闭输入法后再试,成功了。继续观察发现,开启输入法时,按下的可能被输入法截获的键全都变成了VK_PROCESSKEY 229。

可能被截获的键应该包括标点符号(因为有中英文标点之分)、A~Z字母(打字)等等,而方向键、Ctrl\Alt键等则不会被截获,能被正确识别。

搜索相关资料,有两种解决办法。第一种是在程序开始运行时关闭输入法,用ImmDisableIME(0)这个函数,具体使用请查阅msdn;第二种解决办法是在PreTranslateMessage中对键码还原。

  1. // CMainFrame 消息处理程序
  2. BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)
  3. {
  4. // TODO:  在此添加专用代码和/或调用基类
  5. if (pMsg->wParam == VK_PROCESSKEY)
  6. {
  7. pMsg->wParam = ImmGetVirtualKey(pMsg->hwnd);
  8. }
  9. return CFrameWnd::PreTranslateMessage(pMsg);
  10. }

使用时记得在MainFrame.cpp中添加

#include "imm.h"
#pragma comment(lib, "imm32.lib")

引用:http://bbs.csdn.net/topics/340266774

MSDN:ImmGetVirtualKey

最新文章

  1. 前端学PHP之面向对象系列第三篇——三大特性
  2. Docker on YARN在Hulu的实现
  3. 修改APK包并push到system/app路径下安装
  4. iOS 阶段学习第十天笔记(字符串操作)
  5. jq 截取字符串
  6. 根据ip获取用户地理位置
  7. Playmaker Input篇教程之Playmaker购买下载和导入
  8. OpenGL的gluLookAt观察变换函数详解
  9. \r,\n,\t
  10. uva 12544 无向图最小环
  11. Android中使用HTTP和HttpClient进行通信
  12. 【转】在linux内核中读写文件 -- 不错
  13. web - 清除浮动
  14. DAX/PowerBI系列 - 写在前面
  15. Java基础总结--泛型总结
  16. C语言程序设计预报作业
  17. SSM-Spring-14:Spring中默认自动代理DefaultAdvisorAutoProxyCreator
  18. HTTP首部概览
  19. 数据库的连接、会话与SQLite
  20. Linux网络底层收发探究【转】

热门文章

  1. Mark Grover
  2. Cortex-M3学习小结
  3. 1 观察者模式 observer 模拟监听器的实现
  4. 由Nginx反向代理引出的JCaptcha验证码验证失败的问题
  5. vbs操作IE对象
  6. Acwing272 最长公共上升子序列
  7. LeetCode206. Reverse Linked List(反转链表)
  8. layui-简单的登录注册界面
  9. Unity初识项目结构与面板
  10. 【高软作业2】:Java IDE调研分析