zoukankan      html  css  js  c++  java
  • GetDC(),ReleaseDC()

    用GetDC()得到的DC, 必须调用ReleaseDC()
    用CreateDC()创建的DC, 必须调用DeleteDC()

    两者是不能混淆的.
    一种典型的错误代码如下:
    CDC* pDC = GetDC();
    …..
    //做一些无聊的事
    …..

    pDC->DeleteDC(); //做了错误的事

    一般情况下, 上面这个代码也能够工作, 就是有时要报一点
    CHandleMap::RemoveHandle(HANDLE h)异常, 跟踪进代码也看不出啥问题.
    区别:
    ReleaseDC()仅是释放对DC的引用
    DeleteDC()是删除DC对象, 使用GetDC()的时候, 明显的这个DC不是我们自己创建的, 使用DeleteDC()的话就会将别人(通常是MFC框架)创建的DC干掉, 这样当别人要使用自己创建的DC时, 就会产生异常 了.

    ReleaseDC()恰好解决这个问题, 它仅是释放一个引用, 告诉创建者DC, 我已经不用了.

  • 相关阅读:
    前端 HTML CSS
    前端部分1:HTML
    异常处理专区:
    IO模型介绍
    协程专区
    线程专区
    操作系统简介专区
    进程专区
    正则表达式专区:
    题解 P2158 【[SDOI2008]仪仗队】
  • 原文地址:https://www.cnblogs.com/xingrun/p/3409484.html
Copyright © 2011-2022 走看看