制作:KrK (Knuth for Kludge)
#include <windows.h> // Win32API
//-------------------------------------------------
// スクロールバーを制限
// 作成 20140112 KrK
// 引数(I/O) pScroll:スクロールバー構造体
//-------------------------------------------------
VOID LimitScroll(SCROLLINFO* pScroll)
{
// スクロールアップし過ぎは戻す
if (pScroll->nPos < 0)
{
pScroll->nPos = 0;
}
// スクロールダウンし過ぎは戻す
if (((unsigned int)pScroll->nMax - pScroll->nPage + 1)
< (unsigned int)pScroll->nPos)
{
pScroll->nPos = pScroll->nMax - pScroll->nPage + 1;
}
}
SCROLLINFO scrollV; // 縦スクロールバー情報
SCROLLINFO scrollH; // 横スクロールバー情報
// スクロールバー情報を取得
GetScrollInfo(hWnd, SB_VERT, &scrollV);
GetScrollInfo(hWnd, SB_HORZ, &scrollH);
// スクロールバーを移動
scrollV.nPos = ~;
scrollH.nPos = ~;
// 移動し過ぎは戻す
LimitScroll(&scrollV);
LimitScroll(&scrollH);
// 描写
SetScrollInfo(hWnd, SB_VERT, &scrollV, FALSE);
SetScrollInfo(hWnd, SB_HORZ, &scrollH, FALSE);
InvalidateRect(hWnd, NULL, FALSE);