Jak przesunąć programowo scroll?
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:
[crayon-5f335a1e89dc4389517585/]
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:
[crayon-5f335a1e89dc8664715748/]
lub:
[crayon-5f335a1e89dc9645531704/]
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:
[crayon-5f335a1e89dca233987040/]
Autor: Iskar