码迷,mamicode.com
首页 > 其他好文 > 详细

04day-am

时间:2015-03-20 20:09:57      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:

一、Win32消息机制
  1、消息机制
    过程驱动:程序是按照我们预先定义好的顺序执行,每执行一步,下一步都已经按照预定的顺序继续执行,知道程序结束。
    事件驱动:程序的执行顺序是无序的。某个时间点所执行的代码,是由外界通知。由于我们无法决定用户执行顺序,所以代码的执行也是无序。
    Win32的消息机制 - 事件驱动
  2、Win32消息程序
    2.1、Win32窗口注册
    2.2、Win32窗口创建
    2.3、Win32消息循环
      2.3.1、GetMessage
          BOOL GetMessage(
              LPMSG lpMsg, //存放获取到的消息数据
              HWND hWnd, //获取消息的窗口句柄
              UINT wMsgFilterMin, //消息过滤的起始消息
              UINT wMsgFilterMax); //消息过滤的终止消息
          返回值BOOL:成功获取消息,返回TRUE,但是当获取到WM_QUIT消息时,返回FALSE。
          可以使用PostQuitMessage向窗口发送WM_QUIT消息。
          MSG - 由系统填写关于消息的参数。
          hWnd - GetMessage会根据hWnd值,接收由hWnd指定的窗口的消息。
          wMsgFilterMin、wMsgFilterMax - 消息过滤器。
          要求GetMessage接收指定范围的消息。
      2.3.2、TranslateMessage
          将键盘消息转换成字符消息。
        1、首先检查是否是键盘按键消息
        2、如果发现是键盘按键消息,将根据按键,产生一个字符消息,在下一个GetMessage执行时,会收到这个消息。
        3、如果未发现按键消息,不做任何处理。
      2.3.3、DispatchMessage
          根据消息数据内窗口句柄,找到这个窗口的处理函数,调用处理函数,进行消息处理。
          如果MSG中,HWND窗口句柄为空,DispatchMessage不做任何处理。

    2.4、Win32基本消息
      2.4.1、WM_DESTROY 窗口销毁时的消息,可以做退出或善后处理。
      2.4.2、WM_CREATE 窗口创建后,是在窗口创建后,窗口处理函数收到的第一条消息。
          可以在这个消息内做数据初始化/创建子窗口等。
          WPARAM wParam - 不使用
          LPARAM lParam - CREATESTRUCT指针
      2.4.3、WM_SIZE
          当窗口大小发生变化时,会收到这个消息。
          可以在这个消息中调整窗口布局。
          wParam - SIZE发生变化时的标识。
          LOWORD(lParam); - 客户区的宽
          HIWORD(lParam); - 客户区的高
      2.4.4、WM_SYSCOMMAND
          系统命令消息,当点击系统菜单和按钮时,会收到。
          可以在这个消息中,提示用户保存数据等。
      2.4.5、WM_PAINT:绘图消息
      2.4.6、键盘消息
      2.4.7、鼠标消息
      2.4.8、WM_TIMER:定时器消息
    2.5、消息结构
      MSG - 消息结构
        typedef struct {
            HWND hwnd; //消息的窗口句柄
            UINT message; //消息标示
            WPARAM wParam; //消息的参数,32位
            LPARAM lParam; //消息的参数,32位
            DWORD time; //消息产生的时间
            POINT pt; //消息产生时,鼠标的位置
            } MSG, *PMSG;

    2.6、消息的获取和发送
      2.6.1、获取GetMessage/PeekMessage
          GetMessage 获取消息,阻塞函数
          PeekMessage获取消息,非阻塞函数
      2.6.2、发送SendMessage/PostMessage

04day-am

标签:

原文地址:http://www.cnblogs.com/gongyan/p/4354367.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!