DeleteDC() und DeleteObject() nötig?



  • Hi!

    Wenn ich innerhalb einer Funktion einen CDC und eine CBitmap folgendermaßen erzeuge

    CDC dcMem; dcMem.CreateCompatibleDC(pDC);
    CBitmap bmpMem; bmpMem.CreateCompatibleBitmap(pDC, m_zoomRect->Width(), m_zoomRect->Height());
    CBitmap *bmpMemOld = dcMem.SelectObject(&bmpMem);
    

    Muss ich diese am Ende der Funktion löschen?

    dcMem.SelectObject(bmpMemOld);
    bmpMem.DeleteObject();
    dcMem.DeleteDC();
    

    Oder macht das der jeweilige Destruktor, so dass ich nur noch die alte CBitmap selektieren muss?

    dcMem.SelectObject(bmpMemOld);
    

  • Mod

    Die Destruktoren räumen auf. Du musst nur die alte Bitmap wieder selektieren sonst gibt es Leaks.



  • Vielen Dank! 🙂


Anmelden zum Antworten