WM_VSCROLLは、垂直スクロールバーがスクロールされた時に発生するウィンドウメッセージ・・・。
詳しいスクロールの状況は、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にセットする・・・。
Item1-1で、
スクロールバーを動かしてみる・・・。
上に行っても戻らない・・・。
下に行っても戻らない・・・。
もちろん、途中で止めることもできる・・・。
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