win32消息机制之重要消息

上一次介绍了win32的消息机制, 这次主要介绍win32的消息机制之重要消息。

本次使用的开发环境是vs2013,使用的开发语言是C/C++, 创建的项目是win32项目

重要消息

    1 窗口创建消息:WM_CREATE    //窗口创建,类似c++的构造函数,由createwindow来产生,sendmessage发送

    2 重绘消息  WM_PAINT 

           窗口接到wm_paint的消息的情况有两种:一、窗口最初创建;二、窗口出现无效区域
          有4种情况窗口会出现无效区域:a、窗口移动后或大小改变后;b、窗口隐藏后重新显示,或者被其它窗口遮住了一部           分 ,这一部分重新可见;c、调用InvalidateRect(使矩形失效)InvalidateRgn(使区域 失效);d、调用ScrollWindow                     (滚动窗口)ScrollDC(滚动DC)

    3 定时器消息: WM_TIMER

         SetTimer( hWnd, 2, 2000, TimerProc );   //设置定时器,第一个参数为窗口句柄

                                                                           //第二个参数为定时器的ID,自己定义的ID

                                                                            // 第三个参数为设置定时器的时间间隔(单位 ms)

                                                                              //第四个参数为定时器的响应处理函数的函数指针

KillTimer(hWnd, 1);    //关闭定时器,参数1 定时器所在的窗口句柄, 参数2 定时器的ID

    4  WM_ACTIVATE://激活消息
       window有激活消息,有3种情况会被发送(存放在wParam 参数里面)
        1、通过鼠标单击激活了该窗口    ————  WA_CLICKACTIVE://鼠标激活
        2、通过鼠标之外的工具,比如键盘激活窗口  ————WA_ACTIVE://非鼠标激活
        3、取消该窗口的激活————WA_INACTIVE://非激活

WM_SYSCOMMAND://系统命令消息

我们可以截获系统的消息然后进行处理(例如最大化, 最小化, 等)

具体的系统消息存储在wParam里面

例如

SC_CLOSE: 系统关闭消息

 

 

.鼠标消息

  1.1.鼠标左键消息

    WM_LBUTTONDOWN    鼠标左键单击按下

    WM_LBUTTONUP       鼠标左键单击弹起

    WM_LBUTTONDBLCLK    鼠标左键双击

  1.2.鼠标右键消息

    WM_RBUTTONDOWN    鼠标右键按下

    WM_RBUTTONUP       鼠标右键弹起

    WM_RBUTTONDBLCLK   鼠标右键双击

  1.3左键右键消息参数

   (双击消息必须注册时加上CS_DBLCLKS)

    WPARAM ---其他按键状态,例如CTRL/shift等

    LPARAM-----鼠标的坐标系(客户区而言)

    LOWORD----X坐标     HIWORD-------y坐标

  1.4鼠标移动(滚轮)

   WM_MOUSEMOVE      鼠标移动消息

   WM_MOUSEWHEEL    鼠标滚轮消息

  1.5滚轮消息参数

   WPARAM:

      LOWORD-----其他按键状态   HIWORD-----滚轮偏移(120倍数,向前为正)

  LPARAM:

      LOWORD ------x坐标  HIWORD----y坐标

 

.键盘消息

 2.1虚拟键码

在windows中,所有键盘的按键都被定义为一组通用的虚拟键码,所有键都视为虚拟键,每个键都对应的虚拟键码。(WINUSER.H定义)

VK_LEFT, VK_RIGHT,VK_ESC等(查看虚键码值表)

 2.2普通键盘消息

Wm_KEYDOWN     键盘按下消息

WM_KEYUP        键盘弹起消息

   附加参数作用:

   WPARAM   按键的虚拟键码值

   LPARAM    按键的参数(按下的次数等)

 2.3系统按键消息

WM_SYSKEYDOWN  系统按键 F10 alt 和alt的组合键

Alt ---> vk_menu;

如果想构成alt + 组合键

直接在wm_syskeydown:消息下分支语句

Case ‘ h ’:即可。

WM_SYSKEYUP     系统键放下时消息

   附加参数作用:

   WPARAM   按键的虚拟键码值

   LPARAM    按键的参数(按下的次数等

 2.4字符消息

WM_CHAR         字符消息(当键盘按下可见字符时,先产生WM_KEYDOWN消息,TranslateMessage转换成WM_CHAR消息,)

   附加参数作用

   WPARAM   输入的字符

   LPARAM    按键的相关信

 

三.定时器消息:

  每过多少毫秒就相应一次,相当于时间上的循环处理

  WM_TIMER消息(处理时间是毫秒,不准确)

           WPARAM----定时器ID

           LPARAM----定时器处理函数指针

  定时器使用:

   UINT_PTR  SetTimer(HWND h,UINT nID,UINT time,TIMERPROC lp)

  关闭定时器:

   BOOL killTimer(HWND hWND,UNIT_PTR  uIDEvent0);

四.重绘消息:

当窗口需要绘制的时候,会发送WM_PAIT消息给处理函数

       Bool InvallidateRect(HWND hWnd,

           const RECT* LpRect ,BOOL erase//重绘前是否删除)

       WM_PAINT WPARAM---LPARAM参数无用

       SendMessage(hWnd, WM_MYMESSAGE, 0, 0);

猜你喜欢

转载自blog.csdn.net/ASZSYJ/article/details/82108127