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


    原文 http://blog.csdn.net/xxxluozhen/article/details/4123549

    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取得的消息。消息被调度到的窗口程序即是WindowProc函数。windowProc函数是一个应用程序定义的函数。它处理发送给窗口的消息。

      函数原型: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函数将消息传给窗体函数去处理.

  • 相关阅读:
    Shell学习(四)Shell运算符
    Shell学习(三)Shell参数传递
    Shell学习(二)Shell变量
    Shell学习(一)认识Shell
    JVM学习(四)JVM调优
    JVM学习(三)JVM垃圾回收
    JVM学习(二)JVM加载类
    JVM学习(一)什么是JVM
    Python学习————包
    Python学习————模块
  • 原文地址:https://www.cnblogs.com/ganxiang/p/13084076.html
Copyright © 2020-2023  润新知