Moje główne okno programu staje się za małe na pomieszczenie wszystkich rzeczy. Potrzebuję więc dodać pionowy scrollbar by móc przewijać okno i w ten sposób wszystko pomieścić. Zakodowałem 'scrollbar control', program przetwarza WM_VSCROLL messages takie jak np. SB_LINEDOWN i pasek przewijania ładnie przesuwa się. Została ostatnia najtrudniejsza dla mnie rzecz - zakodowanie przesuwania się okna wraz z przesuwaniem paska przewijania.
Próbowałem w ten sposób:
int dy = -( CurrPos - si.nPos );
RECT rctMainWindowArea = { 0, 0, 1000, main_window.bottom };
ScrollWindowEx( hwndMainWindow, 0, dy,( CONST RECT * ) &rctMainWindowArea,( CONST RECT * ) NULL,( HRGN ) NULL,( LPRECT ) NULL, SW_SCROLLCHILDREN | SW_INVALIDATE | SW_ERASE );
UpdateWindow( hwndMainWindow );
Wszystko działa ładnie gdy przesuwam okno w dół. Problem jest wtedy gdy wracam do górnej części okna - wszystko rozwala się graficznie. Googlowałem w tym temacie ale nie udało mi się znaleźć konkretnych przykładów jak wykonać podobną rzecz. Z tego co rozumiem należy przerysować okno zaraz po przesunięciu scrollbara tak by uwzględniono przesunięcie nPos. Nie mam jednak pojęcia jak to zrobić. Rzeczy, które trzeba przesuwać na głównym oknie to kilka basic controls, pare napisów narysowanych poprzez TextOut(), ramki RoundRect() itp. Czy ktoś mógłby zaprezentować gotowy przykład przewijania lub przynajmniej wytłumaczyć jak to dokładnie zrobić? Z góry dzięki.
P.S. używam dev-c++ 4.9.9.2