WinAPI - zmiana koloru (wypełnienia) przycisku

WinAPI - zmiana koloru (wypełnienia) przycisku
MI
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 5 lat
  • Postów:243
0

Chciałbym zmienić kolor przycisku. Najłatwiej wg mnie po prostu utworzyć prostokąt tam gdzie jest przycisk i wypełnić go kolorem. Tak zrobiłem i nie ma efektu żadnego. Dlaczego tak się dzieje? Może inaczej trzeba to zrobić?

Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:2 minuty
0

Tu jest przykład bajeranckiego przycisku.

Przy czym kod tam pokazany jest o tyle brzydki, że wszystko jest wepchnięte w procedurę głównego okna.
Należałoby raczej wykorzystać mechanizm zwany “subclassing”, (CreateWindowSubclass), wyciągnąć kod specyficzny dla przycisku do osobnej procedury, i opakować w jakieś CreateFancyButton którego byś używał zamiast CreateWindow.

edytowany 1x, ostatnio: Azarien
MI
A dlaczego mój kod nie dziala?
_13th_Dragon
@Mikilll - jak chcesz się czegoś naprawdę nauczyć to zacznij przerabiać kroczek po kroczku podany kod do twojego, tam gdzie przestanie działać - będzie kolejna przyczyna niedziałania twego kodu. Postępując w ten sposób będziesz bardzo dobrze znał te przyczyny, ba jakbyś zapomniał to będziesz wiedzieć jak to odtworzyć.
MI
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 5 lat
  • Postów:243
0

Chyba wpadłem o co chodzi. Mój przycisk zasłania prostokat i dlatego go nie widać. Trochę słabo :) Jaki jest najprostszy sposób (jakaś funkcja) żeby pomalować tło przycisku?

edytowany 1x, ostatnio: Mikilll
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:6 dni
0

Nadpisać WM_PAINT może zajrzyj jednak pod link pod słowem "Tu" w poście od @Azarien


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: _13th_Dragon
MI
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 5 lat
  • Postów:243
0

Na tej stronce na stackoverflow piszą że najprostszym sposobem jest dodanie stylu BS_PUSHBUTTON i BS_OWNERDRAW a potem zrobienie tak jak ja czyli stworzenie prostokąta tam gdzie przycisk. Tak robię i dalej bez efektu. Jeszcze jest możliwość użycia komunikatu WM_CTLCOLORBTN z którym nie wiem o co chodzi. Dziwne ze tu nie ma tu jakiejś prostej funkcji zmieniającej tło przycisku.

edytowany 1x, ostatnio: Mikilll

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.