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 - 按键的相关参数