• VC++学习笔记之消息处理机制和窗口过程函数


    先上张图

    一、消息处理机制
          (1)操作系统接收到应用程序的“窗口消息”,将消息投递到该应用程序的消息队列中。
          (2)应用程序在消息循环中调用GetMessage函数,从消息队列中取出一条一条的消息。取出消息后,应用程序可以对消息进行一些预处理,例如,放弃对某些消息的响应,或者调用TranslateMessage产生新的消息。
             BOOL GetMessage(
                                LPMSG lpMsg,     //消息(MSG)结构体对象
                                HWND hWnd,   //指定接收那个窗口的消息
                                UINT wMsgFilterMin,   //获取消息的最小值
                                UINT wMsgFilterMax   //获取消息的最大值
             );
             TranslateMessage函数用于将虚拟键消息转换为字符消息。
             DispachMessage函数分派一个消息到窗口过程,由窗口过程函数对消息进行处理。
             获取消息还可以使用“PeekMessage”函数。
          (3)应用程序调用DispatchMessage,将消息回传给操作系统。消息是由MSG结构体对象来表示的,其中就包含了接收消息的窗口的句柄。因此,DispatchMessage函数总能进行正确的传递。
          (4)系统利用“WNDCLASS结构体”的“lpfnWndProc成员”保存的窗口过程函数的“指针”,调用窗口过程,对消息进行处理(即“系统给应用程序发送了消息”)。

    二、窗口的过程函数
            窗口过程函数的声明如下:
            LRESULT   CALLBACK    WindowProc(
            HWND    hwnd,    //对应消息的窗口句柄
            UINT       uMsg,    //消息代码
            WPARAM    wParam,  //消息代码附加参数
            LPARAM     lParam    //消息代码附加参数
            );
            在窗口过程函数内部使用switch/case语句来确定窗口过程接收的是什么消息,以及如何对这个消息进行处理。
            比如:
            LRESULT CALLBACK   WinSunProc( HWND hwnd , UINT uMsg, WPARAM wParam , LPARAM lParam )
           {
                   switch(uMsg)
                   {
                           case WM_CHAR:
                                     .................................
                           case WM_LBUTTONDOWN:
                                      ......................................
                           case  WM_DESTROY:
                                      ..................................
                             default:
                                      .................................
                    }
                    return 0;
           }

    朋友,如果您有什么真知灼见,可以加“新浪微博”/MSN哦,starrycheng@live.com,我们大家一起讨论,一起研究。

    最后,帮忙加一分吧,想整个空间系统。

  • 相关阅读:
    设计模式
    显示WiFi密码
    05-变量
    04-杂谈
    03-杂谈
    02-杂谈
    01-linux介绍、命令
    14-python--inner
    13-python--bibao
    11-python-iterator
  • 原文地址:https://www.cnblogs.com/ssol/p/2249881.html
Copyright © 2020-2023  润新知