HDC,CDC,CClientDC的区别和联系是什么?

来源:互联网 发布:网络用语jqk什么意思 编辑:程序博客网 时间:2024/06/06 02:57

简而言之,HDC是句柄;CDC是MFC封装的Windows 设备相关的一个类;CClientDC是CDC的衍生类,产生对应于Windows客户区的对象

CDC类是MFC为了实现GDI功能专门封装的一个类,而且它是基类,由它派生出的类有CWindowDC、CClientDC 的等等,因而他们是继承的关系,CClientDC专门用来绘制窗口或者控件的客户区

 

pDC 是 类指针 
HDC 是 windows句柄 
通过pDC获得hdc: 
HDC hdc=pDC->GetSafeHdc(); 
通过hdc获得pDC: 
CDC *pDC=new CDC; 
pDC->Attach(hdc);

 

HDC是WINDOWS的一种数据类型,是设备描述句柄。 
而CDC是MFC里的一个类,它封装了几乎所有的关于 
HDC的操作。 
也可以这样说,HDC定义的变量指向一块内存,这块 
内存用来描述一个设备的相关的内容,所以也可以 
认为HDC定义的是一个指针;而CDC类定义一个对象, 
这个对象拥有HDC定义的一个设备描述表,同时也包 
含与HDC相关的操作的函数。 
这与HPEN和CPen,POINT与CPoint之间的差别是一样

  CPaintDC     dc(this) 

 CDC*   pDC=GetDC()  ;
  CClientDC   dc(this) ;

CClientDC *pDC=new CClientDC(this); 

析构与定义时的区别:

HDC hscrDC=CreateDC("DISPLAY",NULL,NULL,NULL);

HDC compatDC=CreateCompatibleDC(hscrDC);

DeleteDC(hscrDC);

DeleteDC(hscrDC);

CClietDC *pDC=new CClientDc(this);

(  定义二 :CDC *pDC=GetDC();)

(   定义三://CCLient dc(this);     )

CDC memDC;

memDC.CreateCopatibleDC(pDC);

(   //memDC.CreateCompatible(&dc);   )

delete pDC;

(   //dc.deleteObject();)

memDC.DeleteDC();

 

注意画笔,画刷的析构

CPen pen;

pen.DeleteObject():

 

0 0