Jak przesunąć programowo scroll?

Należy wysłać do okna odpowiedni komunikat:

– WM_VSCROLL – aby przesunąć pionowy scroll,
– WM_HSCROLL – aby przesunąć poziomy scroll,

za pomocą funkcji SendMessage:

Pierwszy parametr to uchwyt okna, do którego ma zostać wysłany komunikat, następny – identyfikator komunikatu, kolejne dwa parametry to wartości, jakie będą wraz z komunikatem przesłane. W wParam prześlemy informację o tym, o ile chcemy przesunąć scroll, lParam nie będziemy używać. W przypadku komunikatów WM_VSCROLL i WM_HSCROLL przydatne będą takie opcje:

SB_BOTTOM Przesuwa scroll do samego końca.
SB_LINELEFT Przesuwa scroll o jedną linię w lewo (lub w górę).
SB_LINERIGHT Przesuwa scroll o jedną linię w prawo (lub w dół).
SB_PAGELEFT Przesuwa scroll o jedną stronę w lewo (lub w górę).
SB_PAGERIGHT Przesuwa scroll o jedną stronę w prawo (lub w dół).
SB_THUMBPOSITION Przesuwa scroll do podanego miejsca.
SB_TOP Przesuwa scroll na sam początek.

Przykład:

lub:

Jak widać, jeżeli chcemy przesunąć scroll do danego miejsca, musimy ‚skleić’ za pomocą MAKELONG dwie wartości ze sobą: SB_THUMBPOSITION oraz nową pozycję scrolla.

Jeżeli chcemy otrzymać aktualną pozycję scrolla, należy skorzystać z funkcji GetScrollPos:

Autor: Iskar