9.windows消息机制(四)

1.绘图消息

  WM_PAINT - 当窗口需要绘制的时候,会发送窗口处理函数。

  需要重新绘制的情况:

    (1)窗口从创建到第一次显示

    (2)从被遮挡到重新显示

    (3)窗口变大(窗口变小时,窗口本身不需要重新,但如果注册窗口类中加了CS_HREDRAW | CS_VREDRAW风格,就会重绘) 

    (4)调用InvalidateRect函数  

  窗口无效区域 - 被声明成需要重新绘制的区域。

  BOOL InvalidateRect( HWND              hWnd,    //窗口句柄

CONST RECT*   lpRect,    //区域的矩形坐标

BOOL               bErase);  //重回前是否擦除

  在程序中,如果需要绘制窗口,调用函数声明窗口无效区域。

  WPARAM - 不使用

  LPARAM - 不使用

  消息处理步骤

    (1)开始绘图处理

       HDC BeginPaint( HWND  hWnd,  //绘图窗口

   LPPAINTSTRUCT  lpPaint);  //绘图参数的buffer

       返回绘图设备句柄HDC

    (2)绘图

    (3)结束绘图

       BOOL EndPaint( HWND  hWnd,  //绘图窗口

  CONST PAINTSTRUCT  *lpPaint);  //绘图参数的指针

2.键盘消息

  WM_KEYDOWN - 按键被按下时产生

  WM_KEYUP - 按键被放开时产生

  WM_SYSKEYDOWN - 系统键按下时产生,比如ALT、F10

  WM_SYSKEYUP - 系统键放开时产生

  WM_CHAR - 字符消息(TranslateMessage发送的)

  消息参数:

    按键消息:WPARAM - 按键的Virtual Key(虚拟键码)

LPARAM - 按键的参数,比如按下次数

    WM_CHAR消息:

         WPARAM - 输入的字符(ASC字符编码)

         LPARAM - 按键的相关参数

时间: 2024-09-30 16:01:29

9.windows消息机制(四)的相关文章

(转载)Windows消息机制

文章出处:http://www.cnblogs.com/watsonyin/archive/2005/12/12/295536.html Windows消息机制 Windows操作系统最大的特点就是其图形化的操作界面,其图形化界面是建立在其消息处理机制这个基础之上的.如果不理解Windows消息处理机制,肯定无法深入的理解Windows编程.可惜很多程序员对Windows消息只是略有所闻,对其使用知之甚少,更不了解其内部实现原理,本文试着一步一步向大家披露我理解的Windows消息机制.可以说,

收藏:Windows消息机制

百度百科介绍的windows消息机制也不错:http://baike.baidu.com/view/672379.htm Windows的应用程序一般包含窗口(Window),它主要为用户提供一种可视化的交互方式,窗口是由线程(Thread)创建的.Windows系统通过消息机制来管理交互,消息(Message)被发送,保存,处理,一个线程会维护自己的一套消息队列(Message Queue),以保持线程间的独占性.队列的特点无非是先进先出,这种机制可以实现一种异步的需求响应过程. 消息的是什么

从0 开始 WPF MVVM 企业级框架实现与说明 ---- 第一讲 WPF中 windows消息机制

谈到桌面应用程序,我们第一反应就是它的消息机制是怎么处理的,那么我们就先聊聊这个windows消息机制 谈起“消息机制”这个词,我们都会想到Windows的消息机制,系统将键盘鼠标的行为包装成一个Windows Message,然后系统主动将这些Windows Message派发给特定的窗口,实际上消息是被Post到特定窗口所在线程的消息队列,应用程序的消息循环再不断的从消息队列当中获取消息,然后再派发给特定窗口类的窗口过程来处理,在窗口过程中完成一次用户交互. 其实,WPF的底层也是基于Win

Windows 消息机制

Windows 消息机制 Windows是一个消息驱动的操作系统. 如绘制窗体的消息 WM_PAINT. 结构体定义: 消息分类-发送途径 队列消息. Windows为每一个执行中的程序维护一个消息队列.由应用程序自己取出,如WM_TIMER. 非队列消息. 此类消息来自特定的Windows函数,如UpdateWindow()函数直接向窗体处理函数发送WM_PAINT重绘消息. 消息分类-发送者 系统消息.是提前定义的UINT常量. 用户消息. 通过RegisterWindowMessage()

windows消息机制(MFC)

windows消息机制(MFC) 消息分类与消息队列 Windows中,消息使用统一的结构体(MSG)来存放信息,其中message表明消息的具体的类型, 而wParam,lParam是其最灵活的两个变量,为不同的消息类型时,存放数据的含义也不一样. time表示产生消息的时间,pt表示产生消息时鼠标的位置. 按照类型,Windows将消息分为: (0) 消息ID范围 系统定义消息ID范围:[0x0000, 0x03ff]用户自定义的消息ID范围: WM_USER: 0x0400-0x7FFF 

windows消息机制

一. windows消息机制处理流程 (1)windows会为每一个正在执行的windows应用程序建立一个消息队列,即应用程序队列,用来存放该程序可能创建的各种窗口的消息. 当应用程序发生事件后,windows将事件转化为消息并将消息放入应用程序的消息队列中. (2)应用程序通过GetMessage从消息队列中检索事件消息并把他们分发到相应窗口的消息处理函数中. while(GetMessage(&msg, NULL, 0, 0)) { // 将虚拟键消息转换为字符消息 TranslateMe

005 windows消息机制

#windows消息机制 新建第一个Win32应用程序 VS2015 新建项目 Win32应用程序 // Win32WindowDemo.cpp : 定义应用程序的入口点. // #include "stdafx.h" #include "Win32WindowDemo.h" #define MAX_LOADSTRING 100 // 全局变量: HINSTANCE hInst; // 当前实例 WCHAR szTitle[MAX_LOADSTRING]; // 标

深入Delphi -- Windows 消息机制

http://www.txsz.net/xs/delphi/3/Windows%20%E6%B6%88%E6%81%AF%E6%9C%BA%E5%88%B6.htm Windows 消息机制 by machine 大家是不是很奇怪为什么我还没说到Delphi的控件呢? 不过不用着急,有关深入控件的内容,将会很快出现了,但在这之前, 还得了解Windows图形界面程序的机制--Windows的消息机制. 使用过Delphi的朋友都知道,Delphi是一个真正面向对象的编程环境, 但是不但如此,De

Windows消息机制驱动的客户端程序GetMssage()

要从消息队列中取出消息,我们需要调用GetMessage()函数,该函数的原型声明如下: BOOL GetMessage( LPMSG lpMsg,              // address of structure with message HWND hWnd,                 // handle of window UINT wMsgFilterMin,       // first message UINT wMsgFilterMax        // last m

Windows消息机制(转)1

Windows的应用程序一般包含窗口(Window),它主要为用户提供一种可视化的交互方式,窗口是总是在某个线程(Thread)内创建的.Windows系统通过消息机制来管理交互,消息(Message)被发送,保存,处理,一个线程会维护自己的一套消息队列(Message Queue),以保持线程间的独占性.队列的特点无非是先进先出,这种机制可以实现一种异步的需求响应过程. PS 常见的错误的理解: 1) 每个窗口有自己的消息队列 (我加的) 消息的是什么样子的? 消息由一个叫MSG的结构体定义,