TranslateMessage DispatchMessage

转载 2016年08月29日 16:20:30

TranslateMessage函数

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

.函数原型:
    BOOL TranslateMessage(  CONST MSG *lpMsg );
.参数:
    lpMsg 
        指向一个含有用GetMessage或PeekMessage函数从调用线程的消息队列中取得消息信息的MSG结构的指针。
.返回值:
    如果消息被转换(即,字符消息被送到线程的消息队列中),返回非零值。
    如果消息是 WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, 或 WM_SYSKEYUP,返回非零值,不考虑转换。
    如果消息没有转换(即,字符消息没被送到线程的消息队列中),返回值是零。
.备注:
    TranslateMessage函数不修改由参数lpMsg指向的消息。
    消息WM_KEYDOWN和WM_KEYUP组合产生一个WM_CHAR或WM_DEADCHAR消息。消息WM_SYSKEYDOWN和WM_SYSKEYUP组合产生一个WM_SYSCHAR或 WM_SYSDEADCHAR 消息。
    TtanslateMessage仅为那些由键盘驱动器映射为ASCII字符的键产生WM_CHAR消息。
    如果应用程序为其它用途而处理虚拟键消息,不应调用TranslateMessage函数。例如,如果TranslateAccelerator函数返回一个非零值,则应用程序将不调用TranslateMessage函数。
    Windows CE:Windows CE不支持扫描码或扩展键标志,因此,它不支持由TranslateMessage函数产生的WM_CHAR消息中的lKeyData参数(lParam)16-24的取值。
    TranslateMessage函数只能用于转换由GetMessage或PeekMessage函数接收到的消息。
 

 

DispatchMessage函数

函数功能:该函数调度一个消息给窗口程序。通常调度从GetMessage取得的消息。消息被调度到的窗口程序即是MainProc()函数。

  函数原型:LONG DispatchMessage(CONST MSG*lpmsg);

  参数:

  lpmsg:指向含有消息的MSG结构的指针。

  返回值:返回值是窗口程序返回的值。尽管返回值的含义依赖于被调度的消息,但返回值通常被忽略。

  备注:MSG结构必须包含有效的消息值。如果参数lpmsg指向一个WM_TIMER消息,并且WM_TIMER消息的参数IParam不为NULL,则调用IPa1ram指向的函数,而不是调用窗口程序。

  速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;头文件:winuser.h;输入库:user32.lib;Unicode:在Windows NT环境下以Unicode和ANSI方式实现。

 

总结:TranslateMessage函数将键盘消息转化,DispatchMessage函数将消息传给窗体函数去处理.

十五: TranslateMessage(&msg) 函数 和DispatchMessage(&msg)函数

TranslateMessage是用来把虚拟键消息转换为字符消息。由于Windows对所有键盘编码都是采用虚拟键的定义,这样当按键按下时,并不得字符消息,需要键盘映射转换为字符的消息。Translat...
  • ljd_1986413
  • ljd_1986413
  • 2011年04月02日 10:33
  • 4274

PostMessage,SendMessage,GetMessage,PeekMessage,TranslateMessage,DispatchMessage的用法集合

SendMessage函数功能描述:将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口过程,直到窗口过程处理完消息后才返回。 Postmessage函数则是将消息放入消息队列里,并立即...
  • KingCat666
  • KingCat666
  • 2015年03月09日 09:58
  • 1340

消息循环中TranslateMessage和Dispatch函数的作用

TranslateMessage函数 函数功能描述:将虚拟键消息转换为字符消息。字符消息被送到调用线程的消息队列中,在下一次线程调用函数GetMessage或PeekMessage时被读出。 .函数...
  • wang15061955806
  • wang15061955806
  • 2016年07月29日 16:55
  • 592

关于GetMessage和DispatchMessage

在看 Programming Role Playing Games with DirectX 一书中有下面的代码片段 while(Msg.message != WM_QUIT)...{    if(P...
  • fancylea
  • fancylea
  • 2006年08月11日 16:53
  • 2185

Windows API一日一练(14)DispatchMessage函数

前面已经介绍从系统队列里获取一条消息,然后经过快捷键的函数检查,又通过字符消息函数的转换,最后要做的事情就是调用DispatchMessage函数,它的意思就是说要把这条消息发送到窗口里的消息处理函数...
  • caimouse
  • caimouse
  • 2007年07月24日 08:38
  • 8882

MFC 消息处理 PeekMessage TranslateMessage DispatchMessage

由 arain 于 星期二, 11/02/2010 - 10:44 发表 MSG message ;   if (::PeekMessage(&message ,NULL , 0, 0 ,PM...
  • linlingzhao
  • linlingzhao
  • 2012年04月27日 17:24
  • 1343

TranslateMessage和DispatchMessage作用

PostMessage是将消息放入到窗体的消息队列中,窗体过程需要等待一段时间,以便从队列中取出了消息之后,才处理消息 SendMessage不将消息放入消息队列,而只是把直接让窗体过程处理这个消息...
  • wmtbla
  • wmtbla
  • 2015年12月06日 11:02
  • 272

关于DispatchMessage的问题

函数功能:该函数调度一个消息给窗口程序。通常调度从GetMessage取得的消息。     函数原型:LONG DispatchMessage(CONST MSG *lpmsg);     参数:  ...
  • luozhan
  • luozhan
  • 2009年07月29日 10:07
  • 6513

浅议Qt的事件处理机制 一

深入了解事件处理系统对于每个学习Qt人来说非常重要,可以说,Qt是以事件驱动的UI工具集。 大家熟知Signals/Slots在多线程的实现也依赖于Qt的事件处理机制。     在Qt中,事件被封装...
  • chinabinlang
  • chinabinlang
  • 2013年11月20日 17:17
  • 1687

【重学C/C++】DispatchMessage||TranslateMessage||PostThreadMessage||PeekMessage

Windows API一日一练(14) DispatchMessage函数 (牛人的网站!) 前面已经介绍从系统队列里获取一条消息,然后经过快捷键的函数检查,又通过字符消息函数的转换,最...
  • scut1135
  • scut1135
  • 2011年10月13日 22:44
  • 3759
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TranslateMessage DispatchMessage
举报原因:
原因补充:

(最多只允许输入30个字)