Win98/VC++6.0 SPなし
久しぶりにご質問させて頂きたいと思っています。
よろしくお願いいたします。
オーバーラップウィンドウにテキストを
コンソールプログラムのように描画していく
プログラムを作っています。
このとき画面からはみ出す(下へ)場合を想定して、
スクロールバーをつけてみました。
単純にCreateWindow で WS_VSCROLL を追記しただけ
で、後は「猫でもわかる・・・」サイトのソースを
コピーして書いてみて、とりあえずできるようになったのですが、
スクロールバーの ツマミ 部分がスクロールの移動量に対して
異常に小さいです。
2~3行しかスクロールしないはずなのに、ツマミが小さい
場合は、何に原因があるのでしょうか。
ご存知の方いらっしゃいましたらご教授ください。
以下、コピーしたソースです。
-----------------------------
	case WM_CREATE:
		wPosX = GetSystemMetrics(SM_CXSCREEN);
		wPosY = GetSystemMetrics(SM_CYSCREEN);
		break;
    case WM_SIZE:
        yclient = HIWORD(lParam);
        range = wPosY - yclient;
        y = min(y, range);
        SetScrollRange(hWnd, SB_VERT, 0, range, FALSE);
        SetScrollPos(hWnd, SB_VERT, y, TRUE);
        break;
	case WM_VSCROLL:
		switch (LOWORD(wParam))
		{
		case SB_LINEUP:
			dy = -1;
			break;
		case SB_LINEDOWN:
			dy = 1;
			break;
        case SB_THUMBPOSITION:
            dy = HIWORD(wParam)-y;
            break;
        case SB_PAGEDOWN:
            dy = 10;
            break;
        case SB_PAGEUP:
            dy = -10;
            break;
        default:
            dy = 0;
            break;
        }
        dy = max(-y, min(dy, range - y));
        if (dy != 0) {
            y += dy;
            ScrollWindow(hWnd, 0, -dy, NULL, NULL);
            SetScrollPos(hWnd, SB_VERT, y, TRUE);
            UpdateWindow(hWnd);
        }
        break;
SetScrollInfo() で、ページサイズを指定してみてください。
私はGetScrollInfo()、SetScrollInfo()、および
SCROLLINFO構造体を使う方法しか知りません。
その場合はSCROLLINFO構造体のnPageが
スクロールボックスの大きさになります。
dairygoodsさん、ター坊さん
ありがとうございました。
おかげさまで解決しました。
SCROLLINFO構造体を設定して計算することで
スクロールが必要な場合は表示し、必要がない
場合は表示しない。
と、理想のかたちになりました。
ありがとうございました。

 
  
  
  
  