当前位置:   article > 正文

MFC中CDC、CClientDC、CWindowDC、CPaintDC、CMetaFileDC 的区别_cclientdc cdc

cclientdc cdc

1. CDC

MFC画图的基础类,使用前需先调用GetDC()获得CDC作图指针,使用结束调用ReleaseDC()释放掉获取的指针;

2. CClientDC

此类派生于CDC类,其构造函数中会调用GetDC,析构函数中调用了ReleaseDC。定义时,传入CWnd指针初始化后,即可以使用,而不需要获得、释放DC。

CClientDC dc(this);

在文档视图结构中,当this为视图类指针,则CClientDC只能在视图类的客户区作图;当this为视图类的父指针,即CMainFrame类型的指针时,则还可以在框架窗口的客户区(工具栏)作图。

3. CWindowDC

此类派生于CDC类,其构造函数中会调用GetDC,析构函数中调用了ReleaseDC。定义时,传入CWnd指针初始化后,即可以使用,而不需要获得、释放DC。

CWindowDCdc(this);

在文档视图结构中,当this为视图类指针,则CClientDC只能在视图类的客户区作图;当this为视图类的父指针,即CMainFrame类型的指针时,则还可以在框架窗口的客户区(工具栏)与非客户区(标题栏、菜单栏)作图。

4. CPaintDC

此类派生于CDC类,只能用于用于OnPaint函数中(OnPaint中会调用OnDraw)。如果直接在OnPaint函数中使用DC,首先需要使用BeginPaint获得DC句柄,使用完毕后调用EndPaint。而CPaintDC类在在构造函数中调用了BeginPaint,在析构函数中调用了EndPaint。

5. CMetaFileDC

此类派生于CDC类,可以保存一些列作图命令在内存画布中。需要显示的时候再播放出来。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/244755?site
推荐阅读
相关标签
  

闽ICP备14008679号