《Windows程序设计》笔记 —— Chapter Four
1.WinMain进入循环之前,通常会有UpdateWindow来向窗口过程投放WM_PAINT消息。
2.触发WM_PAINT消息的事件:之前隐藏的窗口部分重新可见;改变窗口的大小;ScrollWindow或ScrollDC滚动客户区;InvalidRect或者InvalidRgn显示产生WM_PAINT消息;而Validate则会将WM_PAINT取消掉。
3.程序应该组织成可以保留绘制客户区需要的所有信息。
4.客户区无效区域、有效区域的理解,处理WM_PAINT时,窗口过程可以通过GetUpdateRect获取无效区域的坐标。
5.设备描述表总是与显示器上的特定窗口相关。
6.WM_ERASEBKGND处理无效区域的擦除,并利用WNDCLASS.hbrbackground中的刷子属性填充无效区域。
7.PAINTSTRUCT结构。
8.InvalidateRect(hwnd,NULL,TRUE)使整个客户区无效,并擦除背景,如果最后一个参数位FALSE则不擦除背景。
9.获取设备描述表的方法:
1) hdc = BeginPaint(hwnd,&ps);
EndPaint(hwnd,&ps); 此方法仅在无效区域上画图
2) hdc = GetDC(hwnd);
ReleaseDC(hwnd,hdc); 此方法可在客户端任何区域上画图,且不会使无效变有效。
GetWindowDC,返回整个窗口的设备描述表,可修改窗口标题等。