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)句柄。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

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

CDC是MFC的DC的一个类  HDC是DC的句柄,API中的一个类似指针的数据类型.  MFC类的前缀都是C开头的  H开头的大多数是句柄  这是为了助记,是编程读\写代码的...

DC、CDC、HDC

  • 2014-08-14 11:20
  • 100KB
  • 下载

CWnd和CDC, hwnd和hdc

摘自 http://www.cnblogs.com/qq78292959/archive/2011/08/25/2153457.html 虽然Gilbert之前介绍过CWnd和HWnd的区别, 但...

CDC与HDC区别与转换

  • 2012-08-29 15:02
  • 57KB
  • 下载

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

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

CDC、HDC、pDC之间的关系

1.CDC *pDC和HDC hdc有什么不同,类似的有CWnd *pWnd和HWnd? pDC是类指针 HDC是windows句柄 通过pDC获得hdc: HDC hdc=pDC->Ge...

VC中HDC与CDC的区别

首先说一下什么是DC(设备描述表):Windows应用程序通过为指定设备(屏幕,打印机等)创建一个设备描述表(Device Context, DC)在DC表示的逻辑意义的“画布”上进行图形的绘制。DC...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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