WM_VSCROLL

WM_VSCROLLは、垂直スクロールバーがスクロールされた時に発生するウィンドウメッセージ・・・。

WM_VSCROLL message (Windows)

詳しいスクロールの状況は、LOWORD(wParam)で得られるので、switch-case文で振り分けて処理する・・・。

まず、WM_INITDIALOGで、

scrinfoとhScrollはstaticとして用意し、初期情報をセットして、以降は現在位置のみセット可能とする・・・。

スクロールバーが一番上にセットされた時は、

scrinfo.nPosを一番上の最小値であるscrinfo.nMinとする・・・。
一番下なら、

scrinfo.nMaxとする・・・。
両端のつまみで1行上に行くと、

1つ減り、
下に行くと、

1つ増える・・・。
もちろん、下限や上限を超えないようにして・・・。

スクロールバーの途中をクリックしてページ単位で移動する場合、上をクリックで、

ページ分(nPage)減らし、下をクリックで、

ページ分(nPage)増やす・・・。

スクロールつまみが離された時は、

HIWORD(wParam)で離された位置を取得できるのでそれをセットする・・・。

最後に、

scrinfo.nPosをhScrollにセットする・・・。

f:id:BG1:20150918110818p:plain

Item1-1で、

f:id:BG1:20150918110839p:plain

スクロールバーを動かしてみる・・・。

f:id:BG1:20150918110903p:plain

上に行っても戻らない・・・。

f:id:BG1:20150918110920p:plain

下に行っても戻らない・・・。

f:id:BG1:20150918111012p:plain

もちろん、途中で止めることもできる・・・。

Sample/WM_VSCROLL.cpp at master · bg1bgst333/Sample · GitHub
Sample/resource.h at master · bg1bgst333/Sample · GitHub
Sample/WM_VSCROLL.rc at master · bg1bgst333/Sample · GitHub