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)