zoukankan      html  css  js  c++  java
  • VC中CDC与HDC的区别以及二者之间的转换

    CDC是MFC的DC的一个类
    HDC是DC的句柄,API中的一个类似指针的数据类型.
    MFC类的前缀都是C开头的
    H开头的大多数是句柄
    这是为了助记,是编程读写代码的好的习惯.
    CDC中所有MFC的DC的基类.常用的CClientDC dc(this);就是CDC的子类(或称派生类).
    CDC等设备上下分类,都含有一个类的成员变量:m_nHdc;即HDC类型的句柄.
    记住下面的一句话,会有助于你的理解.
    MFC的类,是在用window API语句开发出来的有一定功能的小程序.(也可称为类).使用它的默认方法,就是,记住它的名字与参数(可以用笔记,代替脑记).
    如果将window api比做汇编语言
    那么MFC就相当于Basic语言.

    cdc是设备描述表的基类,clientDC指代客户区的设备描述表,PaintDC只用于OnPaint()函数中

     
     
    HDC是WINDOWS的一种数据类型,是设备描述句柄。
    而CDC是MFC里的一个类,它封装了几乎所有的关于
    HDC的操作。
    也可以这样说,HDC定义的变量指向一块内存,这块
    内存用来描述一个设备的相关的内容,所以也可以
    认为HDC定义的是一个指针;而CDC类定义一个对象,
    这个对象拥有HDC定义的一个设备描述表,同时也包
    含与HDC相关的操作的函数。
    这与HPEN和CPen,POINT与CPoint之间的差别是一样
    的。
     
    CDC 到HDC 的转化:
    2007-05-09 12:04
    方法一: 此方法在设备结束时不会销毁原来的资源(即:hDC,hBitmap)
    CDC *pDC = CDC::FromHandle(hDC);
    CBitmap *pBitmap = CBitmap::FromHandle(hBitmap);
     
    方法二: 此方法在设备结束时会销毁原来的资源(即:hDC,hBitmap)
    CDC dc;
    dc.Attach(hDC);
    CBitmap bit;
    bit.Attach(hBitmap);
     
    在结束的时候加dc.detach()也不会销毁原来资源
     
    HDC hdc;
    CDC cdc;
    cdc到hdc
    hdc = cdc.GetSafeHdc();
    hdc到cdc
    cdc.Attach(hdc);
     
    回复于 2004-04-08 17:46:03 得分 20
     
    HDC hdc;
    CDC cdc;
    cdc到hdc
    hdc = cdc.GetSafeHdc();
    hdc到cdc
    cdc.Attach(hdc)
     
     
    回复于 2004-04-08 17:49:14 得分 15
     
    CDC 是MFC中的类
    而HDC是Handle
    使用
    HDC GetDC()
     
    回复于 2004-04-08 17:51:49 得分 0
     
    CDC cdc;
    HDC hDC = cdc.m_hDC
     
    回复于 2004-04-08 17:54:20 得分 20
     
    CDC dc;
    HDC hDC = dc.m_hDC
    dc.FromHandle(hDC);
     
    回复于 2004-04-08 18:01:51 得分 10
     
    CDC to hdc
    用成员变量m_hDC
    hdc to CDC
    用FromHandle
     
    回复于 2004-04-08 18:02:47 得分 10
     
    dc.FromHandle(hDC)产生一个dc,但是是临时的,mfc不保证系统在什么时候删除dc.
    dc.Attach(hDC)是永久的,直到这个dc的生命正常结束。
     
    回复于 2004-04-08 18:05:21 得分 5
     
    以上的都很对。你就查找替换。将所有的(hdc,替换为pdc->(当然。前面声明个
    pdc就可以了。
  • 相关阅读:
    结对-结对编程项目作业名称-结对项目总结
    课后作业 -团队项目编程进度
    团队-象棋游戏-模块开发过程
    团队-象棋游戏-模块测试过程
    结队-结队编程项目作业名称-项目进度
    课后作业-阅读任务-阅读笔记-3
    团队-象棋游戏-需求分析
    团队-象棋游戏-成员简介及分工
    课后作业 -团队项目编程进度
    团队编程 象棋游戏 开发文档
  • 原文地址:https://www.cnblogs.com/nanyangzp/p/3919012.html
Copyright © 2011-2022 走看看