Witam. Takie krótkie pytania:
1.
Gdy klikam na "krzyżyk" aby zamknąć aplikację wywołuje się WM_CLOSE. Zwalniam wtedy HDC i BITMAPY, lecz okno się nie zamyka. Rozumiem, że domyślna obsługa wydarzenia WM_CLOSE to wywołanie po prostu WM_DESTROY i muszę w WM_CLOSE po prostu wywołać PostQuitMessage() ?
- (tu troszkę dłużej)
WYJAŚNIENIE:
Tworzę swój przycisk w taki sposób, że:
- Tworze klasę przycisku;
- W konstruktorze tworzę kontrolkę i przypisuję adres klasy do kontrolki za pomocą SetWindowLong (żeby potem czytać stan przycisku itp...)
- Posiadam załóżmy bitmapę i hdc z rzeczy, które należy zwolnić.
- Proces niszczenia kontrolki opiera się na
- wywołaniu funkcji Destroy() wewnątrz klasy, która niszczy hwnd_Button
- wewnątrz komunikatu WM_DESTROY natomiast niszczę dopiero klasę.
- w destruktorze klasy zwalniam HDC i BITMAPĘ
Powycinana troszkę klasa:
http://pastebin.com/EJXxk5pz
Komunikat WM_DESTROY wewnątrz przycisku:
http://pastebin.com/5SMvFqx2
Jak tworzę i usuwam kontrolkę:
CreateButton *MyButton = CreateButton(&MyButton, /*jakis region*/, myDrawFunc);
MyButton->Destroy();
Ok a teraz moje pytanie:
Jak w komunikacie WM_CLOSE (lub WM_DESTROY) procedury głównego okna próbuję zniszczyć kontrolkę, okno główne mi się niby zamyka i wszystko jest ok, ale w procesach dalej widnieje mój program. Dodam, że owa sytuacja występuje losowo, raz proces znika raz nie. Coś robię nie tak w owym kodzie?