CDC class members
CDC,四大派生类CPaintDC CWindowDC CClientDC
消息映射 消息与函数关联与win32的switch不同
win32下无class概念,MFC、C++更加方便
1. CPaintDC 标准客户区绘图,刷新不消失,WM_PAINT中使用。简单封装了函数,构造和析构函数,成员变量:来源窗口句柄。构造函数:在基类中BeginPaint获取窗口句柄,得到hdc成为CDC,句柄同时被记录在m_hWnd中。析构函数:把产生的句柄嫁接,Afx ,成员变量主要为了析构时做参数。意义在于成对调用的必然执行,不会漏掉后者。
2. CWindowDC非客户区绘图。WM_NCPAINT中使用时刷新不消失,其他消息时都是临时性的。封装GetDC ReleaseDC.
3. CClientDC 临时客户区绘图,刷新消失,任何时候使用。封装GetDC ReleaseDC. NCPAINT 非客户区绘图。
void CMFCDlg:: WmNcPaint() {}CWindowDC dc(this) ; CRect rect; GetWindowRect(rect); dc.Rectangle(0,0,rect.Width(),rect.Hight())
OffsetRect(-rect.left,-rect.top) 屏幕坐标系转化为非客户区坐标
Rectangle 功能更强大,可直接将rect指针作为参数。dc.Rectangle(&rect).
4. CMemDC 关于内存