Czy da się zamienić bitmapę zwykłego windowsowego przycisku na swoją?

0

Wpierw jednak coś offtopic.
W celu znalezienia odpowiedzi przeglądałem kurs WinAPI http://cpp0x.pl/kursy/Kurs-WinAPI-C++/Kontrolki/Wlasne-kontrolki-cz-2/211 i teraz zauważyłem, że w

case WM_MOUSEMOVE:
{
    POINT cur;
    HRGN hRgn = CreateRectRgn( 0, 0, 1, 1 );
    GetCursorPos( & cur );
    ScreenToClient( hwnd, & cur );
    GetWindowRgn( hwnd, hRgn );
    if( !PtInRegion( hRgn, cur.x, cur.y ) &&( BOOL ) GetWindowLong( hwnd, 0 ) )
         SendMessage( hwnd, WM_LBUTTONUP, wParam, lParam );
   
}
break; 

autor nie usuwa regionu hRgn. To nie będzie się z kazdym wywołaniem komunikatu WM_MOUSE kumulowało?

A teraz przejdźmy do problemu:
Robię teraz te własne kontrolki, aby mój program jakoś wyglądał i tak sobie gdybam, czy nie ma jakiejś funkcji co przypisywałaby moją własną bitmapę do przycisku? Próbowałem za pomocą subclassingu, ale mi chodzi o pozostawienie calutkiej obsługi procedury okna a zmiane bitmapy. Jest jakikolwiek wgląd na kod procedury okna tych zwykłych szarych kontrolek?

0

WM_PAINT

0

To by było zbyt proste. Bo mi najbardziej zależy na "skopiowaniu" mechanizmu działania scrollbarów. Nie wiem, czy msdn oferuje w ogóle coś takiego. Bo nawet jakbym miał bitmapę to bym musiał zmieniać rozmiar suwaka, sprawdzać stany przycisków. Wiecie może jak są tworzone bitmapy do takowych kontrolek? Myslę po prostu nad podmianą tych bitmap dla konkretnyh okien.

0

Suwak to też okienko i też ma WM_PAINT

0

No tak, ale pytanie co mam rysować, bo ten suwak raz jest mniejszy raz większy, ma określoną pozycję i uzywają subclassingu chcę właśnie oszczędzić sobie roboty tego typu. No chyba, że da sie skądś odczytać pozycję xy suwaka oraz jego wielkość.

1

autor nie usuwa regionu hRgn. To nie będzie się z kazdym wywołaniem komunikatu WM_MOUSE kumulowało?

No, raczej. W kodzie jest wyciek. Dokumentacja mówi jasno:

When you no longer need the HRGN object, call the DeleteObject function to delete it.

1 użytkowników online, w tym zalogowanych: 0, gości: 1