TranslateMessage(&msg);
TranslateMessage是用来把快捷键消息转换为字符消息,并将转换后的新消息投递到调用线程的消息队列中。
由于Windows对所有键盘编码都是采用虚拟键的定义,这样当按键按下时,并不得字符消息,需要键盘映射转换为字符的消息。字符消息被投递到调用线程的消息队列中,当下一次调用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是检查需要转换的消息。

TranslateMessage(msg); WINAPI相关推荐

  1. 十五: TranslateMessage(msg) 函数 和DispatchMessage(msg)函数

    TranslateMessage函数将虚拟键消息转换为字符消息.字符消息被寄送到调用线程的消息队列里,当下一次线程调用函数GetMessage或PeekMessage时被读出. TranslateMe ...

  2. DotNet4应用程序打包工具(把DotNet4安装程序打包进你的应用程序;WINAPI开发,无dotNet环境也可顺利执行)【一】整体思路...

    先说废话 很多朋友对我写的这个系列的第五篇比较感兴趣:http://www.cnblogs.com/liulun/archive/2011/12/08/2280110.html 因为我承诺第五篇就公布 ...

  3. Visual C++——加速键

    基本概念 加速键:用户在键盘上按下了定义的加速键也将产生相应的命令消息. 什么是键盘加速键?加速键是产生WM_COMMAND消息(有些情况下是WM_SYSCOMMAND)的键组合.许多时候,程序使用加 ...

  4. VC实现微秒(十万分之一秒)休眠

    VC自带的SDK中为我们提供了一个Sleep函数,此函数的最小单位为毫秒(既千分之一秒):但在实际的应该中(特别是网络数据传输)我们需要更小的休眠单位(微秒),而系统又没有提供相关API,那么我们如何 ...

  5. TranslateMessage ,GetMessage, DispatchMessage分析

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

  6. 绘图;BeginPaint;PAINTSTRUCT(ps);SetArcDirection函数改变弧线的方向;LineDDA函数

    转自:http://blog.csdn.net/tcjiaan/article/details/8533358 BeginPaint HDC BeginPaint( HWND hwnd, // 窗口的 ...

  7. GetMessage TranslateMessage DispatchMessage 和PeekMessage

    文章目录 GetMessage 函数功能 函数声明 第一个参数 第二个参数 第三个参数 第四个参数 返回值 补充: TranslateMessage 函数功能 函数声明 第一个参数: 返回值 补充 D ...

  8. C++-Windows消息循环GetMessage/TranslateMessage/DispatchMessage

    1.windows消息循环 if (GetMessage(&msg, NULL, 0, 0)) {TranslateMessage(&msg); //消息转化DispatchMessa ...

  9. MFC 消息处理 PeekMessage TranslateMessage DispatchMessage

    http://blog.csdn.net/linlingzhao/article/details/7517951 由 arain 于 星期二, 11/02/2010 - 10:44 发表 MSG me ...

最新文章

  1. SAP ABAP BAPI_GOODSMVT_CREATE的几个应用
  2. Java String split 使用详解、split 方法存在的一些坑
  3. 4键电子手表说明书_电子手表怎么调(电子手表的四个键的功能各是什么)
  4. PHP文件包含漏洞原理分析和利用方法
  5. css--block formatting context
  6. 【剑指offer】面试题35:复杂链表的复制(Java)
  7. 送书 | 师妹越多,团队集体智慧越高,当占比80%时,达到巅峰
  8. spring-boot spring-security-oauth2
  9. 著名设计师的标志(Logo)设计观
  10. SQL:pgsql中查询一段时间内数据及相关时间操作
  11. Netperf 网络性能测试
  12. oracle普通索引改唯一索引,Oracle唯一索引功能替代
  13. apache ab压测与参数传递
  14. 天正对应cad版本_天正建筑t20适用哪个版本cad
  15. python气象卫星云图解析_python下载卫星云图合成gif的方法示例
  16. 贝叶斯法则的举例分析
  17. maven 加入第三方库_maven 手动添加第三方的jar包
  18. Visual Studio 2017下载地址和安装教程(图解版)
  19. 国产类 postman 软件推荐给你~
  20. hua图软件 mac_mac系统有画图工具吗|mac电脑把预览变成画图工具方法

热门文章

  1. AOP 实现分布式锁
  2. CSS:仅对子盒子修饰样式,三种让其在父盒子中水平垂直居中的方法及其优缺点(父盒子宽高未知)
  3. 学习只靠打鸡血可不行!6点助你赢在效率!
  4. 前两天申元庆与黄启功在湖边聊天,带给了业内四大信号
  5. python游戏后端_Python实现生命游戏
  6. godday生成crt和key文件
  7. 送11个超级炫酷的机械键盘鼠标套装,程序员撸码神器
  8. Windows如何删除MySql服务
  9. 创东方钱伟:蚁视和极米背后的投资人
  10. java实现电脑截屏+生成解析简单的二维码