Witam,
Robię aplikację pod winapi i chciałem zrobić coś jak interaktywne przyciski - w momencie gdy kursor znajduje się nad przyciskiem następuje podmiana bitmapy. Zrobiłem okno (przycisk) na podstawie systemowej klasy Button ze stylem BS_OWNERDRAW. Z tego co wyczytałem istnieje parę opcji. Pierwsza z nich to przetworzenie odpowiedniej wiadomości w procedurze okna rodzica, a konkretnie wiadomości WM_NOTIFY wysyłanej do tegoż okna. W parametrze lparam mamy adres struktury NMHDR, w której to jednym z pól jest kod notyfikacji. Jednak gdy w procedurze okna rodzica wypisuje coś takiego:
case WM_NOTIFY:
MessageBox(0,L"",L"",MB_OK);
brak jest jakiegokolwiek efektu podczas ruchu myszy nad oknem-przyciskiem.
Druga z opcji jest drobne zmodyfikowanie pętli wiadomości, np. dodaj warunek
if( PeekMessage(&msg,UchwytOknaPrzycisku,0x0200,0x0201,NULL) == WM_MOUSEMOVE) //i tutaj jej przetworzenie
Jednak takie coś nie działa, nie mam pojęcia dlaczego. (Działa tylko kiedy klikne LPM na przycisk... ).
Ponadto mam jakiś problem z programem bo po kompilacji łapie zawieche dopiero jak uruchamiam menadżera zadań to odzyskuje sprawność. I w końcu ostatnia sprawa program prawidłowo wyświetla przycisk i bitmape w oknie jednak po zminimalizowaniu nie odrysowywuje przycisku. Proszę o jakieś sugestie co zmienić itp. kod źródłowy wrzucam tu na wklej.org, post będzie bardziej czytelny: