TranslateMessage函数将虚拟键消息转换为字符消息。字符消息被寄送到调用线程的消息队列里,当下一次线程调用函数GetMessage或PeekMessage时被读出。
TranslateMessage是用来把虚拟键消息转换为字符消息。由于Windows对所有键盘编码都是采用虚拟键的定义,这样当按键按下时,并不得字符消息,需要键盘映射转换为字符的消息。
TranslateMessage函数用于将虚拟键消息转换为字符消息。字符消息被投递到调用线程的消息队列中,当下一次调用GetMessage函数时被取出。当我们敲击键盘上的某个字符键时,系统将产生WM_KEYDOWN和WM_KEYUP消息。这两个消息的附加参数(wParam和lParam)包含的是虚拟键代码和扫描码等信息,而我们在程序中往往需要得到某个字符的ASCII码,TranslateMessage这个函数就可以将WM_KEYDOWN和WM_ KEYUP消息的组合转换为一条WM_CHAR消息(该消息的wParam附加参数包含了字符的ASCII码),并将转换后的新消息投递到调用线程的消息队列中。注意,TranslateMessage函数并不会修改原有的消息,它只是产生新的消息并投递到消息队列中。
也就是说TranslateMessage会发现消息里是否有字符键的消息,如果有字符键的消息,就会产生WM_CHAR消息,如果没有就会产生什么消息。
 
函数TranslateMessage声明如下:
WINUSERAPI
BOOL
WINAPI
TranslateMessage(
    __in CONST MSG *lpMsg);
lpMsg是检查需要转换的消息。
 
调用这个函数的例子如下:
#006 int APIENTRY _tWinMain(HINSTANCE hInstance,
#007                       HINSTANCE hPrevInstance,
#008                       LPTSTR    lpCmdLine,
#009                       int       nCmdShow)
#010 {
#011  UNREFERENCED_PARAMETER(hPrevInstance);
#012  UNREFERENCED_PARAMETER(lpCmdLine);
#013
#014   //
#015  MSG msg;
#016  HACCEL hAccelTable;
#017
#018  // 加载全局字符串。
#019  LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
#020  LoadString(hInstance, IDC_TESTWIN, szWindowClass, MAX_LOADSTRING);
#021  MyRegisterClass(hInstance);
#022
#023  // 应用程序初始化:
#024  if (!InitInstance (hInstance, nCmdShow))
#025  {
#026         return FALSE;
#027  }
#028
#029  hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_TESTWIN));
#030
#031  // 消息循环:
#032  BOOL bRet;
#033  while ( (bRet = GetMessage(&msg, NULL, 0, 0)) != 0)
#034  {
#035          if (bRet == -1)
#036         {
#037               //处理出错。
#038
#039         }
#040         else if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
#041         {
#042               TranslateMessage(&msg);  //消息处理
#043               DispatchMessage(&msg);   //消息派遣
#044         }
#045  }
#046
#047  return (int) msg.wParam;
#048 }
#049

十五: TranslateMessage(msg) 函数 和DispatchMessage(msg)函数相关推荐

  1. C语言编程>第二十五周 ③ 下列给定程序中,函数fun的功能是:根据输入的三个边长(整型值),判断能否构成三角形;构成的是等边三角形,还是等腰三角形。若能构成等边三角形函数返回3,若能构成……

    例题:下列给定程序中,函数fun的功能是:根据输入的三个边长(整型值),判断能否构成三角形:构成的是等边三角形,还是等腰三角形.若能构成等边三角形函数返回3,若能构成等腰三角形函数返回2,若能构成三角 ...

  2. linux exec 二程序,二十五、Linux 进程与信号---exec函数

    25.1 介绍 在用 fork 函数创建子进程后,子进程往往要调用一种 exec 函数以执行另一个程序 当进程调用一种 exec 函数时,该进程完全由新程序代换,替换原有进程的正文,而新程序则从其 m ...

  3. 问题十五:C++中抽象类,虚函数是什么鬼?怎么测试

    该篇内容提要: 1,理论解释,来自网上: 2,测试两个子类对父类虚函数的实现. 15.1 抽象类.虚函数是什么鬼? http://www.cnblogs.com/dongsheng/p/3343939 ...

  4. 【软件开发底层知识修炼】二十五 ABI之函数调用约定二之函数返回值为结构体时的约定

    上一篇文章学习了几种函数调用约定的区别,点击链接查看上一篇文章:[软件开发底层知识修炼]二十四 ABI之函数调用约定 本篇文章继续学习函数调用约定中,关于函数返回值的问题.当函数返回值为结构体时,函数 ...

  5. 第二十五章 面向对象------封装、内置函数、反射、动态导入

    1.封装 什么是封装? 1.对外部隐藏内部的属性,以及实现细节,给外部提供使用的接口 注意:封装有隐藏的意思,但不是单纯的隐藏 学习封装的目的:就是为了能够限制外界对内部数据的访问 python中属性 ...

  6. 解题报告(十五)莫比乌斯反演与积性函数(ACM / OI)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 好久没写反演了,写些水题慢慢捡起来 目录 A. (BZOJ 2440: 中山市选2011 )完全平方数 ...

  7. C语言编程>第二十五周 ① 给定程序中,函数fun的功能是:在形参s所指字符串中的每个非数字字符之后插入一个“*”号。

    例题:给定程序中,函数fun的功能是:在形参s所指字符串中的每个非数字字符之后插入一个"*"号. 例如,形参s所指的字符串为:albc45sdtg56f,则执行结果为:a*1b*c ...

  8. C语言编程>第二十五周 ② 下列程序中,函数fun的功能是:将大写字母转换为对应小写字母之后的第五个字母,若为小写字母为v~z,使小写字母的值减21,转换后的小写字母作为函数值返回。

    例题:下列程序中,函数fun的功能是:将大写字母转换为对应小写字母之后的第五个字母,若为小写字母为v-z,使小写字母的值减21,转换后的小写字母作为函数值返回. 例如,若形参是字母A,则转换为小写字母 ...

  9. TranslateMessage ,GetMessage, DispatchMessage分析

    TranslateMessage(&msg); TranslateMessage是用来把快捷键消息转换为字符消息,并将转换后的新消息投递到调用线程的消息队列中. 由于Windows对所有键盘编 ...

最新文章

  1. python两台电脑文件传输_python实现简单socket程序在两台电脑之间传输消息的方法...
  2. B03_NumPy创建数组(numpy.empty,numpy.zeros,numpy.ones)
  3. JavaScript 操作 HTML DOM (文档对象模型) 相关知识点
  4. mysql密码过期问题
  5. C/C++ OpenCV图像的线性混合
  6. Ubuntu离线安装subversion
  7. iOS上架app store下载步骤
  8. 【精读论文】2015-BMVC-Learning Deep Representations of Appearance and Motion for Anomalous Event Detection
  9. last_load_time和last_active_time的选择
  10. 纽约:高速Wi-Fi将进入大街小巷 时时刻刻可无线上网
  11. [2018国家集训队][UOJ449] 喂鸽子 [dp+组合数学]
  12. Excel学习笔记:P18-COUNTIFS函数与SUMIFS函数
  13. SpaceVim - 让你的vim变得更加高效和强大
  14. MySQL 3306端口被占用 ERROR 1043 (08S01): Bad handshake
  15. TCP/IP协议栈Lwip的设计与实现:之三
  16. 使用gstreamer,rtsp拉流,保存图像, jeston,使用硬件加速nvdec/nvenc
  17. 关于公网摄像机直播公网视频直播的基本思考方法
  18. linux 文件打包下载到 Windows
  19. 5G 帧结构、物理资源与物理信道
  20. 开整水果爱疯开发 - Ubuntu 10.10 下搭建 Objective-c 编译环境搭建

热门文章

  1. 搭建SecureCRT
  2. 可扩展java游戏框架实践之java飞机大战
  3. python for循环与函数
  4. 矩阵分析之Householder Reduction
  5. 阿里云远程桌面无法连接怎么办
  6. strace命令使用分析
  7. MATLAB可以使用但是使用help函数报错问题的解决
  8. 影响GPS定位精度的基本概念
  9. VMR-21论文总结
  10. MapperReduce-----好友案列