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

HDC-CDC-CClientDC-CPaintDCC-WindowDC的使用

  • 2014年05月13日 08:34
  • 1.83MB
  • 下载

7.1 如何通过HDC获得CDC指针

  • 2013年11月28日 15:15
  • 12KB
  • 下载

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

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

DC、CDC、HDC

  • 2014年08月14日 11:20
  • 100KB
  • 下载

CDC、HDC、pDC

1.CDC *pDC和HDC hdc有什么不同,类似的有CWnd *pWnd和HWnd? pDC是类指针 HDC是windows句柄 通过pDC获得hdc: HDC hdc=pDC->Ge...
  • mjk1133
  • mjk1133
  • 2011年08月05日 14:53
  • 1307

CDC与HDC区别与转换

  • 2012年08月29日 15:02
  • 57KB
  • 下载

cdc hdc

文章转载 http://www.cnblogs.com/hicjiajia/archive/2011/02/15/1954942.html  Win32 API 三两事 ...

CDC与HDC的区别

http://blog.sina.com.cn/s/blog_6a67b5c50100mp2c.html 微软喜欢将内核对象标识,称为句柄。应该都是32位或者64位整数 HINSTANCE: 进程实例...

CWnd,HWND; CDC,HDC

一:CWnd、HWND、HANDLE CWnd: Window Class 窗口基类 HWND: Window Handle 窗口句柄 HANDLE: handle 句柄 (1)HWND hWnd...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HDC vs CDC
举报原因:
原因补充:

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