求教:CDC 和 CClientDC 的异同 , 一定给分,谢谢!

hxd1114 2002-03-04 10:56:21
CDC 和 CClientDC 有和异同?

分别在什么情况下使用?

谢谢!: )
...全文
85 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
quengzi 2002-03-04
  • 打赏
  • 举报
回复
CDC
CClientDC
CWindowsDC
CPaintDC
好好学习,天天向上
hxd1114 2002-03-04
  • 打赏
  • 举报
回复
谢谢!以后请继续指教~ :D
shuiyan 2002-03-04
  • 打赏
  • 举报
回复
CDC是DC(Device Context,设备上下文或设备环境)相关类,,显示有显示设备环境,打印有打印设备环境,可以理解为:DC提供一个环境,你在这个环境中进行“绘图”,图将绘制在“位图”上。对于显示环境来说,显示器就是其“位图”,对于打印环境来说,打印机就是其“位图”。CDC管理计算机所有提供的设备环境,这一系列类的基类,正如CDialog是CFileDialog等通用对话框类的基类一样。
而CClientDC类是从CDC派生,封装了与“窗口客户区”相关的显示DC,其构造函数调用了GetDC函数,而析构函数调用了ReleaseDC函数。
简单的CDC实现例子
TEXTMETRICtm; //存放字体信息的结构
CDC* pDC=GetDC();
pDC->GetTextMetrics(&tm); //获取当前系统的字体信息
简单的CClientDC实现例子
CClientDC dc(this); //在当前窗口中创建CClientDC对象
CRect myRect;
GetClientRect(&myRect); //获得当前客户区信息赋予myRect
dc.Ellipse(myrc); //用CClientDC对象绘制一个椭圆,改椭圆充满客户区窗口
naef_wy 2002-03-04
  • 打赏
  • 举报
回复
CClientDC,比如你应用程序打开时,主窗口的范围就是CClientDC了
guanjinke 2002-03-04
  • 打赏
  • 举报
回复
CDC 是CClientDC 的基类,CDC所有的函数在CClientDC中都可以使用,CClientDC是客户区设备环境,如果声明一个CClientDC dc(this);那么这个dc就是当前程序的客户区。其余没什么区别。
neccui 2002-03-04
  • 打赏
  • 举报
回复
The CClientDC class is derived from CDC and takes care of calling the Windows functionsGetDC at construction time andReleaseDC at destruction time. This means that the device context associated with a CClientDC object is the client area of a window.

from MSDN

That's mean you can
CClientDC(pWnd);
but you can NOT use this
CDC(pWnd);

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧