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 是检查需要转换的消息。
调用这个函数的例子如下:
#001 // 主程序入口
#002 //
#003 //  蔡军生  2007/07/19
#004 // QQ: 9073204
#005 //
#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 

第 42 行是调用函数 TranslateMessage 作消息转换工作。

(13)TranslateMessage函数相关推荐

  1. Windows API一日一练 13 TranslateMessage函数

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Tran ...

  2. Windows API一日一练(13)TranslateMessage函数

    TranslateMessage是用来把虚拟键消息转换为字符消息.由于Windows对所有键盘编码都是采用虚拟键的定义,这样当按键按下时,并不得字符消息,需要键盘映射转换为字符的消息. Transla ...

  3. 消息循环中的TranslateMessage函数和DispatchMessage函数

    TranslateMessage函数 函数功能描述:将虚拟键消息转换为字符消息.字符消息被送到调用线程的消息队列中,在下一次线程调用函数GetMessage或PeekMessage时被读出. . 函数 ...

  4. 3.1.13.fcntl函数介绍

    3.1.13.fcntl函数介绍 读: f啃处 3.1.13.1.fcntl的原型和作用 (1)fcntl函数是一个多功能文件管理的工具箱,接收2个参数+1个变参.第一个参数是fd表示要操作哪个文件, ...

  5. TranslateMessage函数

    本文是关于TranslateMessage官方文档的相关翻译,拿走不谢. TranslateMessage函数将虚拟键消息转换成字符消息.该字符消息又被发送给对应线程(调用TranslateMessa ...

  6. TranslateMessage函数 (转)

    TranslateMessage是用来把虚拟键消息转换为字符消息.由于Windows对所有键盘编码都是采用虚拟键的定义,这样当按键按下时,并不得字符消息,需要键盘映射转换为字符的消息. Transla ...

  7. 消息循环中的TranslateMessage函数和DispatchMessage函数,特别注意WM_TIMER消息

    TranslateMessage函数 函数功能描述:将虚拟键消息转换为字符消息.字符消息被送到调用线程的消息队列中,在下一次线程调用函数GetMessage或PeekMessage时被读出. .函数原 ...

  8. duilib中TranslateMessage函数和DispatchMessage函数

    TranslateMessage函数 函数功能描述:将虚拟键消息转换为字符消息.字符消息被送到调用线程的消息队列中,在下一次线程调用函数GetMessage或PeekMessage时被读出. .函数原 ...

  9. C++ -- TranslateMessage函数

    TranslateMessage是用来把虚拟键消息转换为字符消息.由于Windows对所有键盘编码都是采用虚拟键的定义,这样当按键按下时,并不得字符消息,需要键盘映射转换为字符的消息. Transla ...

最新文章

  1. poj3171(dp + 线段树)
  2. Java 8的6个问题
  3. 云原生时代,应用架构将如何演进?
  4. tomcat安全配置之禁用Directory Listing
  5. Cambridge Judge Business school faculty review
  6. linux img 内核启动,linux的启动流程(initrd.img)
  7. POJ-2069 Super Star(最小球覆盖)
  8. java8 javafx_Java 8的新增功能(第1部分– JavaFX)
  9. 01-hibernate注解:类级别注解,@Entity,@Table,@Embeddable
  10. Java虚拟机(JVM)默认字符集详解
  11. 浏览器访问网页的详细内部过程
  12. android单片机wifi通信原理,基于单片机计算机之间无线通信实现.doc
  13. scrapy python下载图片_使用Scrapy自带的ImagesPipeline下载图片,并对其进行分类。
  14. python标准库os的方法listdir_Python3 os.listdir() 方法
  15. Mybatis中DAO层接口没有写实现类,Mapper中的方法和DAO接口方法是怎么绑定到一起的...
  16. 【BABY夜谈大数据】基于内容的推荐
  17. 虚拟机搭建集群服务(1)——准备工作
  18. GsonFormatPlus转变回GsonFormat办法
  19. Windows7 关闭UAC_频繁提示的权限放行窗口
  20. 软件方法(下)分析和设计第8章连载[20210816更新]分析 之 分析类图——知识篇

热门文章

  1. anki android自动同步,解决Anki服务器同步问题:坚果云 Floder sync (亲测有效)
  2. CreateCompatibleDC工作原理
  3. C#方法,可空类型,数组,集合,ArrayList排序,List,Hashtable和Dictionary
  4. json to go
  5. 【面试题】MyBatis面试题
  6. 国密SM4算法(简介与C源码)
  7. MQTT协议之订阅及发布(使用paho-mqtt-client或mqttv3实现)
  8. TCP的TIME_WAIT状态为什么要等待2MSL的时长
  9. 跌倒综述 Deep Learning Based Systems Developed for Fall Detection A Review
  10. InputStream输入字节流