[WinAPI] Odświeżanie obszaru klienta
Ostatnio zmodyfikowano 2011-11-30 21:18
piotreczek5 Temat założony przez niniejszego użytkownika |
[WinAPI] Odświeżanie obszaru klienta » 2011-11-30 20:46:25 Witam.
Tworzę program i zmagam się z pewnym problemem. Chcę przesuwać obiekty "namalowane" w WM_PAINT w dowolny punkt w obszarze klienta metodą drag&drop.
Samo przesunięcie kończy się powodzeniem. Odrysowanie nowego obiektu również działa jak należy. Jednakoż pozostaje ślad po obiekcie w miejscu, w którym niegdyś się znajdował.
Po wykonaniu wiadomości WM_PAINT tzn. wysłanej przez Windowsa(nie zdefiniowanej przeze mnie np. SendMessage(hwnd,WM_PAINT,0,0) ) poprzez najechanie na obszar klienta innym oknem wszystko pięknie odrysowuje się. Pozostaje jedynie obiekt w nowym miejscu.
Docelowo wszystko ma się dziać na naszych oczach. Tak jak przesuwanie ikon na pulpicie.
Korzystałem z InvalidateRgn(),InvalidateRect(),RedrawWindow(),SendMessage() i nic.
Czy da się jakoś w czasie rzeczywistym wyczyścić obszar klienta zupełnie i na nowo narysować dane ?
Dziękuję z góry za odpowiedź. |
|
piotreczek5 Temat założony przez niniejszego użytkownika |
Problem rozwiązany! » 2011-11-30 21:18:17 Metodą prób i błędów doszedłem do tego. Nie myślałem, iż będzie to takie proste.
Dla innych : Gdy napotkacie taką sytuację wystarczy w InvalidateRect(HWND,RECT,BOOL); przy wartości BOOL ustawić nie 0 lecz 1.
Pozdrawiam Piotrek |
|
« 1 » |