Windows消息机制

一、Windows消息机制概念&原理:

  一个事件从发生到达处理它的窗口处理函数必须经历以上过程。消息是非抢占式的,总是按到达的先后排队。这也有弊端,就是可能导致一些要求实时事件不能及时得到处理。

  就MFC框架来说,App全局对象执行构造结束后紧接着就调用函数WinMain(),函数WinMain调用消息循环,消息循环负责从应用程序消息队列里取消息并交给os去分发给对应的窗口,消息循环如下。

while( GetMessage(&msg) >0 )
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}

  程序入口 :WINAPI WinMain->定义窗口类->注册窗口类函数RegisterClass->生成窗口函数CreateWindow->显示窗口函数ShowWindow->消息循环->窗口消息处理(回调函数) LRESULT CALLBACK WndProc。

 

   一个消息处理完成,窗口过程WinPro函数返回,DispatchMessage()函数返回,应用程序的消息循环继续while循环,Window系统继续监控各类消息,重复这个过程。

二、消息在Windows中的定义:

struct tagMsg
{
       HWND    hwnd;       //接受该消息的窗口句柄
       UINT    message;    //消息常量标识符,也就是我们通常所说的消息号
       WPARAM  wParam;     //32位消息的特定附加信息,确切含义依赖于消息值
       LPARAM  lParam;     //32位消息的特定附加信息,确切含义依赖于消息值
       DWORD   time;       //消息创建时的时间
       POINT   pt;         //消息创建时的鼠标/光标在屏幕坐标系中的位置
}MSG;

 

三、消息的分类:

 

posted @ 2020-07-03 16:21  An2i  阅读(538)  评论(0)    收藏  举报