MFC-5-消息映射

消息对于窗口应用程序来说十分重要,它是程序运行的动力源泉。

MSG结构含有来自窗口应用程序消息队列的消息信息

typedef struct tagMSG {

    HWND hwnd;

    UINT消息;

    WPARAM wParam;

    LPARAM lParam;

    POINT pt;

MSG;

  • HWND表示32位的接收该消息的窗口句柄,用于检索消息队列中的消息。为0时,则应用程序检索所有消息队列中的消息。窗口可以是任何类型的屏幕对象,如主窗口,对话框,按钮等。
  • 消息表示消息标识符,该值由WINDOWS.H内的宏识别。它是用于区别其他消息的常量,可以使的Windows预定义的常量,也可以是自定义的常量。当窗口过程接受到消息之后,他就会根据消息标识符来决定如何处理消息。例如,消息WM_PAINT通知窗口过程窗口客户去需要重绘。
  • 的wParam和lParam的分别表示消息的第一和第二参数,它们包含了32位的消息特定附加信息,其确切含义依赖于消息本身.wParam通常是一个与消息有关的常量值,也肯能是窗口或控件的句柄。而lParam的通常是一个指向内存中数据的指针.wParam和lParam的都是32位的,因此它们之间可以相互转换。
  • 时间表示消息创建的时间。
  • PT表示消息创建时屏幕的光标坐标。

系统定义消息和应用程序定义消息

  • WM:通用消息窗口消息
  • BM:按钮控制框
  • DM:默认按钮控制框
  • CB:组合框控制框
  • EM:编辑控制框
  • LB:列表控制框
  • SBM:滚动控制框

常用消息:

    Windows定义了成百上千个消息,大多数消息的前缀是“WM”,即代表通用窗口消息。

  • 鼠标消息:主要是来反映鼠标的各种动作,包括鼠标左键按下WM_LBUTTONDOWN、左键释放WM_LBUTTONUP、左键双击WM_LBUTTONBLCLK等。
  • 键盘消息:主要用来反映按键和释放等动作,包括某一按键按下WM_KEYDOWN、某一按键释放WM_KEYUP、某一按键按下和弹起后输入字符WM_CHAR等。
  • WM_COMMAND:既包括控制通知消息,又包括命令消息。
  • WM_PAINT:用来通知窗口需要重新绘制。当发生窗口移动、窗口大小改变、滚动条移动改变窗口等事件时,都会产生WM_PAINT消息。
  • WM_CREATE:用来通知生成窗口,完成初始化。
  • WM_CLOSE:用来通知关闭窗口,与消息WM_CREATE对应。
  • WM_QUIT:用来通知应用程序结束。

消息的发送与接收:

    1、发送消息

    LRESULT SendMessage(

        HWND hWnd,

        UINT Msg,

        WPARAM wParam,

        LPARAM lParam

    );

    2、投递消息

    BOOL PostMessage(

        HWND hWnd,

        UINT Msg,

        WPARAM wParam,

        LPARAM lParam

    );

    3、广播消息

    Long BroadcastSystemMessage(

        DWORD dwFlags,

        LPDWORD lpdwRecipients,

        UINT uiMessage,

        WPARAM wParam,

        LPARAM lParam

    );

消息的接收:

BOOL GetMessage(

    LPMSG lpMsg,

    HWND hWnd,

   UINT wMsgFilterMin,

   UINT wMsgFilterMax

);

BOOL PeekMessage(

    LPMSG lpMsg,

    HWND hWnd,

   UINT wMsgFilterMin,

   UINT wMsgFilterMax,

   UINT wRemoveMsg

);

BOOL WaitMessage(VOID)    // 该函数使应用程序挂起,直到一个新的消息被放入应用程序的消息队列之中才返回。

猜你喜欢

转载自blog.csdn.net/qq_37140815/article/details/81089026