Fehler in Ownerdraw FAQ Eintrag?



  • Hi,

    http://www.c-plusplus.net/forum/viewtopic.php?t=39375

    Der mit CreateSolidBrush erstellte Brush wird nirgendwo gelöscht. geeky schreibt es zwar dabei

    // Achtung: Den Handle, den CreateSolidBrush() zurückliefert 
    // kann nicht mehr gelöscht werden, wenn man es so aufruft:
    

    aber das kann ja wohl nicht sein ernst sein, oder? 😃 🤡
    Für einen FAQ-Beitrag sollte man schon zeigen, wie man es richtig macht. 🙄



  • In der MSDN-Library steht:

    The system does not automatically destroy the returned brush. It is the application's responsibility to destroy the brush when it is no longer needed.

    Demnach müsste man dann wohl die Brushs in WM_CREATE erzeugen und in einer static-Variable speichern, sodass nicht jedesmal bei WM_CTLCOLORSTATIC (oder den anderen Messages) ein Brush erzeugt werden muss, sondern du einfach den aus der static Variable zurücklieferst. Bei WM_DESTROY kannst du diesen dann ja ordnungsgemäß wieder freigeben 😉


Anmelden zum Antworten