[WinAPI] własna kontrolka - Funkcja SetWindowText
Ostatnio zmodyfikowano 2010-11-11 13:02
wojos Temat założony przez niniejszego użytkownika |
[WinAPI] własna kontrolka - Funkcja SetWindowText » 2010-11-10 22:44:00 Mam taki mały problem. Mam własną kontrolkę (przycisk) w WinAPI. Wszystko pięknie działa, jednak zmiana tekstu w czasie działania programu nie powoduje odświeżenia kontrolki(stary tekst jest wyświetlany póki go nie zmaże np. innym oknem :D). Domyślam się, że funkcja DefWindowProc nie wywołuje InvalidateRect. Moje pytanie: Czy dobrze myślę, że należy po swojemu obsłużyć komunikat WM_SETTEXT i jeśli tak - czy okno posiada jakieś swoje specjalne miejsce na wskaźnik do tekstu czy też ja tworzę go sobie osobiście i przechowuje go przy pomocy wskaźnika w dodatkowej pamięci okna (cbWndExtra)? A może mój tok myślenia jest głupi i jest jakiś o wiele prostszy sposób na to wszystko? Z góry dziękuję za wszelką pomoc. |
|
DejaVu |
» 2010-11-11 00:17:38 http://msdn.microsoft.com/en-us/library/ms633546(VS.85).aspx
Skoro wiesz co jest nietak to czemu nie wywołasz InvalidateRect czy cośtam innego by odrysować przycisk po zmianie treści?
/edit:
Mój tok myślenia byłby następujący:
1) Jak się tworzy buttona i gdzie nadaje się mu wyświetlaną treść?
2) Czym się modyfikuje pole za pomocą którego ustawiona została treść początkowa?
3) Czy nie zmodyfikowałem przypadkiem standardowego zachowania przerysowywania przycisków itp?
Być może przytoczyłeś dobre rozwiązanie i być może odświeżenie wyglądu przycisku jest konieczne, jednak istnieje szansa, że błąd leży w innej części kodu o której wspomniałem w pkt 3. |
|
wojos Temat założony przez niniejszego użytkownika |
» 2010-11-11 13:02:07 Po prostu nie obsługiwałem komunikatu WM_SETTEXT a robiła to za mnie funkcja DefWindowProc, która ładnie zmieniała tekst ale nie odświeżała okna :) Tak czy owak problem rozwiązany, dzięki za pomoc :) |
|
« 1 » |