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

    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()函数中

    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.FromHandle(hDC)产生一个dc,但是是临时的,mfc不保证系统在什么时候删除dc.  

    dc.Attach(hDC)是永久的,直到这个dc的生命正常结束

    在结束的时候加dc.detach()也不会销毁原来资源

    CDC到HDC的转化:

      方法一:

      HDC   hdc;  

    CDC   cdc;  

    cdc到hdc  

    hdc   =   cdc.GetSafeHdc();  

    hdc到cdc  

    cdc.Attach(hdc);

      方法二:

      使用成员变量m_hDC

      CDC   dc;  

    HDC   hDC   =   dc.m_hDC

  • 相关阅读:
    Chrome调试工具常用功能
    把读取sql的结果写入到excel文件
    Android逆向破解:Android Killer使用
    鸭子类型和猴子补丁
    Scrapy同时启动多个爬虫
    命令注入
    理解RESTful架构
    程序员需要谨记的九大安全编码规则
    10条建议分享:帮助你成为与硅谷工程师一样优秀的程序员
    代码审计:是安全专家都应该掌握的技能
  • 原文地址:https://www.cnblogs.com/lujin49/p/4957847.html
Copyright © 2011-2022 走看看