MFC中CDC(CObject Device Context)类
程序运行后,程序的标题、边框、菜单区域等为非客户区,程序界面剩余部分为客户区域。
CDC的派生类:(https://topic.alibabacloud.com/a/basics-of-hdc-cdc-cwindowdc-cclientdc-and-cpaintdc_8_8_32337692.html)
上述网址中可查看相关派生类说明,不做具体解释,也可通过微软相关帮助文件分项进行查看。
1、CPaintDC类:为响应Windows消息WM_PAINT的成员函数提供设备环境;
完成在客户区绘图操作:
1 CPaintDC dc(this); 2 Graphics graphics(dc); 3 FontFamily fontFamily(L"Times New Roman"); 4 Gdiplus::Font font(&fontFamily, 24, FontStyleRegular, UnitPixel); 5 PointF pointF(30.0f, 10.0f); SolidBrush solidBrush(Color(255, 0, 0, 255)); 6 graphics.DrawString(L"Hello", -1, &font, pointF, &solidBrush);
2、CClientDC类:为非响应Windows消息WM_PAINT的成员函数提供设备环境;
完成客户区临时绘图:
1 void CMFCPaintingDlg::OnBnClickedButton1() 2 { 3 CClientDC dc(this); 4 Graphics graphics(dc); 5 graphics.DrawEllipse(&Pen(Color(255, 0, 0)), 0, 0, 100, 100); 6 }
CWindowDC类:为成员函数在包括非客户区在内的整个屏幕区域内绘图;
完成屏幕区域绘图:
1 void CMFCPaintingDlg::OnBnClickedButton3() 2 { 3 CWindowDC dc(NULL); 4 Graphics graphics(dc); 5 graphics.DrawEllipse(&Pen(Color(255, 0, 0)), 500, 500, 100, 100); 6 }
问题:CClinentDC dc(this)\CWindowDC dc(this)与CClientDC dc(NULL)\CWindowDC dc(NULL)在客户区域、屏幕区域的区别与联系?
又没有什么可说的