hmm ciężko to opisać po krótce, ale postaram się naprowadzić
otóż pierwsza rzecz jaką robisz to przy wywołaniu CreateWindow (głównego okna) dodajesz styl WS_VSCROLL i teraz przechwytujesz dwa komunikaty:
WM_SIZE oraz WM_VSCROLL; obsługa pierwszego zwykle wygląda tak: cxOkno = LOWORD(lParam); cyOkno = HIWORD(lParam).
A teraz coś wiecej o paskach otóż każdy pasek przewijania ma swój że tak powiem zasięg, tzn istnieje x pozycji tego szarego prostokąta w tym pasku, np zakładając że okno ma 160 pikseli wysokości to możesz w nim wyświetlić tylko 4 rzędy swoich kontrolek edit, a zakładając że wszystkich rzędów masz 10 to suwak może być ustawiony w 6 pozycjach, gdy jest w pozycji 0 wyświetla pierwsze cztery, gdy jest w pozycji 1 wyświetla od drugiego do 5 rzędu, a gdy jest w pozycji 5 wyświetla ostatnie 4 rzędy kontrolek. Właśnie ilość tych pozycji ustawiasz za pomocą funkcji SetScrollRange (w tym przypadku podasz jej wartość ilośćwszystkich - cxOkno/40 - 1). Przechwytując komunikat WM_VSCROLL z wyrażnie LOWORD(wParam) otrzymujesz jakieś powiadomienie, może to być SB_LINEUP, SB_PAGEDOWN itp gdy otrzymasz np SB_LINEDOWN to wiesz że musisz teraz wyświetlić o kolejny rząd niżej tych kontrolek. Ukrywać kontrolki możesz np za pomocą funkcji ShowWindow. Jak widzisz nie jest to zbyt krótki temat, więc starałem się tylko dać Ci jakiś obraz tej sytuacji, po szczegóły odsyłam do dokumentacji poszczególnych funkcji, bądź do Petzolda :)
Pozdrawiam