スクロールバーが最大値に到達しない

[戻る]
夢幻 2004/01/01(木) 23:48:58
スクロールバーを使用して値を変更しようとしています。
しかし、最大値が (最大値 - ページサイズ - 1)になってしまいます。
何故でしょう。仕様なのでしょうか。
開発環境は Win2000 VC6++Pro SDKです
以下にソースの一部を記載します。

//スクロールバーの作成
    SCROLLINFO Info;
    Info.cbSize = sizeof(SCROLLINFO);
    Info.fMask  = SIF_PAGE | SIF_RANGE | SIF_POS;
    Info.nMax   = 100;
    Info.nMin   = 0;
    Info.nPage  = 10;
    Info.nPos   = 0;
    HWND h = ::CreateWindowEx(0,"SCROLLBAR",NULL,
                 WS_CHILD |SBS_HORZ,20,200,300,50,hWnd,
                 HMENU(200),hInstance,NULL);
    ::SetScrollInfo(h,SB_CTL,&Info,TRUE);
    ::ShowWindow(h,SW_SHOWNORMAL);


//WM_HSCROLLの処理
    SCROLLINFO info;
    info.cbSize = sizeof(SCROLLINFO);
    info.fMask = SIF_ALL;
    ::GetScrollInfo((HWND)lParam,SB_CTL,&info);
    switch(LOWORD(wParam))
    {
    case SB_LINERIGHT:
        info.nPos++;
        break;
    case SB_PAGERIGHT:
        info.nPos += info.nPage;
        break;

    case SB_LINELEFT:
        info.nPos--;
        break;
    case SB_PAGELEFT:
        info.nPos -= info.nPage;
        break;
    }
    if(info.nPos > info.nMax)
        info.nPos = info.nMax;
    else if(info.nPos < info.nMin)
        info.nPos = info.nMin;

    HDC hDC = ::GetDC(hWnd);
    char str[128];
    itoa(info.nPos,str,10);
    ::TextOut(hDC,0,0,str,strlen(str));
    ::ReleaseDC(hWnd,hDC);

    ::SetScrollInfo((HWND)lParam,SB_CTL,&info,TRUE);

夢幻 2004/01/02(金) 00:56:26
[[解決]]
自己解決しました。
過去ログによると仕様のようです。
ろくに調べもせず質問してしまってすみませんでした。

古いスレッドには追加発言できません。