HDC vs CDC

原创 2007年09月30日 10:18:00

HDC是一个句柄,CDC是一个MFC定义的类,CDC *是定义一个CDC类的指针,CDC的类成员中应该有一个成员变量m_hDC就是对应的HDC 
 

假设已经有一个CDC
CDC *pdc=GetDc();
HDC hdc=pdc.GetSafeHdc();

HDC是CDC实例的句柄
如果已经知道一个句柄,可以得到这个CDC对象
CDC *pdc=FromHandle( hdc );

 

有时Windows API将会给你一个DC句柄,你可以通过它建立一个CDC类。例如:下拉式列表、组合框和按钮。通过hDC你将接收到绘制消息。下面是将HDC转换成你更熟悉的CDC的程序段。你也可以将该技巧用在其他任何MFC类和Windows句柄的转换中。

void MyODList::DrawItem(LPDRAWITEMSTRUCT lpDrawItem)
{
    CDC myDC;
    myDC.Attach(lpDrawItem->hDC);
    //在此插入其他需要的代码。

    //如果你不将句柄分离,它将被删除,从而导致问题。
    myDC.Detach();
}

另一个方法是调用CDC类的FromHandle方法:
            CDC * pDC = CDC:FromHandle(lpDrawItem->hDC);

目前还不清楚哪种方法更优越―使用FromHandle()的错误也许会更少些,因为它不要求你分离(detach)句柄。

DC、HDC和CDC的区别及MFC常见类的作用

DC:设备上下文(设备描述表),是WINDOWS的一种数据类型。 HDC:设备上下文句柄(可以理解为指向DC结构的指针),它指向一块描述设备的相关的内容的内存块。 CDC:是MFC里面的一个类,且...
  • weiyong1999
  • weiyong1999
  • 2013年03月15日 11:25
  • 4576

【Visual C++】CDC与HDC的区别以及相互转换

CDC是MFC的DC的一个类 HDC是DC的句柄,API中的一个类似指针的数据类型. MFC类的前缀都是C开头的 H开头的大多数是句柄 这是为了助记,是编程读\写代码的好的习惯. CDC中所有MFC的...
  • zhmxy555
  • zhmxy555
  • 2012年04月10日 01:55
  • 9243

DC,CDC和HDC理解

MFC中的DC,CDC和HDC        设备描述表(DC)是Windows中的一种数据结构,它包含GDI需要的所有关于显示界面情况的描述字段,包括相连的物理设备和各种各样的状态信息。 ...
  • dengtaocs
  • dengtaocs
  • 2015年07月30日 10:31
  • 596

一:MFC中HDC与CDC区别和转化

MFC中HDC与CDC区别和转化CDC是MFC的DC的一个类 ,它封装了几乎所有的关于 HDC的操作。HDC是DC的句柄,API中的一个类似指针的数据类型. 设备描述句柄。MFC类的前缀都是C开头的H...
  • ljd_1986413
  • ljd_1986413
  • 2011年03月14日 12:22
  • 3112

CWnd,HWND; CDC,HDC

一:CWnd、HWND、HANDLE CWnd: Window Class 窗口基类 HWND: Window Handle 窗口句柄 HANDLE: handle 句柄 (1)HWND hWnd...
  • libaineu2004
  • libaineu2004
  • 2015年09月28日 17:03
  • 899

MFC的运行机制 以及 MFC中的DC、CDC、HDC、句柄、设备上下文(整理)

在MFC程序中,我们并不经常直接调用Windows API,而是从MFC类创建对象并调用属于这些对象的成员函数.也就是说MFC封装了Windows API.你说你喜欢C++而MFC换一种说法就是一个用...
  • xringm
  • xringm
  • 2016年03月28日 10:45
  • 759

MFC中CDC与HDC的区别以及二者之间的转换

CDC是MFC的DC的一个类 HDC是DC的句柄,API中一个类似指针的数据类型 MFC类的前缀都是C开头的 H开头的大多数是句柄 这是为了助记,是编程读/写代码的好的习惯。 CDC中所有M...
  • c1520006273
  • c1520006273
  • 2016年01月18日 00:54
  • 241

cdc hdc

文章转载 http://www.cnblogs.com/hicjiajia/archive/2011/02/15/1954942.html  Win32 API 三两事 ...
  • iamherego
  • iamherego
  • 2013年09月24日 16:22
  • 739

HDC & CDC

HDC hdc;hdc是一个句柄,它可以指向一个系统对象CDC dc;CDC是一个类,dc是它的一个对象,这个类是专门用于封装HDC的,比如可以这样dc.Attach(hdc);接着就可以通过dc来操...
  • limax_2004
  • limax_2004
  • 2007年09月27日 16:08
  • 569

HDC cdc

CDC是MFC的DC的一个类  HDC是DC的句柄,API中的一个类似指针的数据类型.  MFC类的前缀都是C开头的  H开头的大多数是句柄  这是为了助记,是编程读\写代码的好的习惯.  ...
  • fenxian2011
  • fenxian2011
  • 2013年04月21日 15:55
  • 468
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HDC vs CDC
举报原因:
原因补充:

(最多只允许输入30个字)