Win32 Windows编程 六

来源:互联网 发布:python 企业微信 编辑:程序博客网 时间:2024/06/05 09:23

WM_PAINT消息

1 WM_PAINT 由于窗口的互相覆盖等,产生需要绘制的区域, 那么会产生WM_PAINT消息。一般情况下,不直接发送WM_PAINT消息,通过API声明需要绘制区域来产生

WM_PAINT消息

例如可以使用 InvalidateRect 声明一个需要重新绘制的区域

BOOL InvalidateRect(  HWND hWnd,           // handle to window  CONST RECT* lpRect,  // rectangle coordinates  BOOL bErase          // erase state);
2 WM_PAINT 的注意点
2.1 如果一个消息队列中 有多个WM_PAINT消息,只有最后一个消息有作用
2.2 WM_PAINT消息处理中,要清空需要被绘制的区域。BeginPaint
3 WM_PAINT 的使用
3.1 WM_PAINT开始时 必须调用BeginPaint
3.2 WM_PAINT结束时 必须调用EndPaint

键盘消息

1 键盘消息

按键消息

WM_KEYDOWN 当键被按下时产生

WM_KEYUP 当键被释放时产生

WM_SYSKEYDOWN     (ALT/F10) 当系统键被按下时产生

WM_SYSKEYUP当系统键释放时产生

字符消息

WM_CHAR  当有字符键被按下时产生 

TranslateMessage会将WM_KEYDOWN消息中 可以显示的按键 转换成WM_CHAR的消息

2 消息参数

WPARAM - 虚拟键码

LPARAM  - 相关的按键信息

3 消息的使用

3.1 当有按键消息时,首先进入系统消息队列 然后被程序的消息循环获取 

3.2 消息的处理

4 键盘消息的顺序

对于可显示字符:WM_KEYDOWN WM_CHAR WM_KEYUP

对于不可显示字符: WM_KEYDOWN WM_KEYUP

对于系统键: WM_SYSKEYDOWN WM_KEYUP

如果按键一直不释放,会重复产生

WM_KEYDOWN(WM_KEYCHAR)

5 鼠标消息:

WM_MOUSEWHEEL

WM_LBUTTONDBCLICK

WM_RBUTTONDBCLICK

WM_LBUTTONDOWN:
WM_LBUTTONUP:
WM_RBUTTONDOWN:
WM_RBUTTONUP:
WM_MOUSEMOVE:

双击消息

1、窗口注册要增加CS_DBCLICK类型 

2、在窗口处理函数中增加消息处理

        3、产生过程 例如 WM_LBUTTONDBCLICK

WM_LBUTTONDOWN

WM_LBUTTONUP

WM_LBUTTONDBCLICK

WM_LBUTTONUP

连续两次LBUTTONDOWN的间隔小雨预定义的双击事件间隔,就会产生一个双击消息



1 0
原创粉丝点击