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)在客户区域、屏幕区域的区别与联系?

 

posted @ 2023-07-14 14:59  左边的翼  阅读(93)  评论(0编辑  收藏  举报