1.this->GetDC()->m_hDC
2.HBITMAP hBmp
3.m_pScreenDC->Attach(::GetDC(NULL))中的(::GetDC(NULL))
4.fun(CDC* pDC)中的局部(CDC* pDC)
5.CDC memDC;memDC.CreateCompatibleDC(pDC)中的memDC
综合以上5种情况哪个应该释放,哪个不用释放,每个奉献10分,希望高手说说原因

解决方案 »

  1.   

    .this->GetDC()->m_hDC
    ============
    这个相当于调用了GetDC,应该调用ReleaseDc释放。
    2.HBITMAP hBmp
    =============
    这个不用的释放的。
    3.m_pScreenDC->Attach(::GetDC(NULL))中的(::GetDC(NULL))
    ===============
    GetDC必须要和ReleaseDc配对
    4.fun(CDC* pDC)中的局部(CDC* pDC)
    ===================
    这个pDC如果是new出来的,那么要调用delete释放
    5.CDC memDC;memDC.CreateCompatibleDC(pDC)中的memDC
    =============
    这个不用的。
      

  2.   

    像this->GetDC()->m_hDC和(::GetDC(NULL))没有给他们实际变量名,ReleaseDc的时候如何操作啊,能不能贴下代码啊?还有第四个DC是用的CPaintDC dc(this);如何释放?请指教
      

  3.   

    像this->GetDC()->m_hDC和(::GetDC(NULL))没有给他们实际变量名,ReleaseDc的时候如何操作啊,能不能贴下代码啊?
    ==========
    ReleaseDC在调用时并不用DC做参数啊,第一个可以写成:this->ReleaseDC();
    m_pScreenDC->Attach(::GetDC(NULL))中的(::GetDC(NULL))这个GetDC实际上是有一个变量的,它已经被关联到m_pScreenDC中了。就相当于是m_pScreenDC->m_hDC.还有第四个DC是用的CPaintDC dc(this);如何释放?请指教
    =======
    这个不用释放的,因为dc这个变量在函数结束时会调用CPaintDC的析构函数,自己释放的。