本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

[MSVC] CScrollView でのスクロールバー表示直後のクライアントサイズについて

文書番号: 403857

最終更新日: 1999/03/19


この資料は以下の製品について記述したものです。


この記事は、以前は次の ID で公開されていました: JP403857

概要

この資料は、CScrollView でのスクロールバー表示直後のクライアントサイズに
ついて説明したものです。

詳細

<QUESTION>

CScrollView をビューとする子ウィンドウを作り、そのウィンドウの最下部に常に
ボタンが表示されるように OnSize() のタイミングで渡されるパラメータを元にして ボタンを MoveWindow() しています。しかし、子ウィンドウをリサイズし、スクロール バーが表示されるとボタンがスクロールバーの下に隠れてしまいます。
何がいけないのでしょう。OnSize() のコードは以下の通りです。
    void CMyScrollView::OnSize(UINT nType, int cx, int cy)
    {
         CScrollView::OnSize(nType, cx, cy);
        // TODO: この位置にメッセージ ハンドラのコードを追加してください。
        myButton.MoveWindow(0, (cy - 100), 100, 100); //ボタンの移動
    }

<ANSWER>

CScrollView クラスは SetScrollSizes() で指定されたサイズよりウィンドウが小さく なると、自動的にスクロールバーを表示してくれます。上記のコードではスクロール バーが先に表示されてしまうので、デフォルトの OnSize() の前にボタンの位置を
変更して下さい。ClassWizard の生成したコメントに従うとうまくいきません。
    void CMyScrollView::OnSize(UINT nType, int cx, int cy)
    {
        myButton.MoveWindow(0, (cy - 100), 100, 100); //ボタンの移動
        CScrollView::OnSize(nType, cx, cy);
        // TODO: この位置にメッセージ ハンドラのコードを追加してください。
    }

詳細

  • Visual C++ は、米国 Microsoft Corporation の商標です。

Keywords: KBHOWTO VC10 VC15 VC20 KB403857
Technology: kbAudDeveloper kbvc150 kbVC32bitSearch kbVCsearch

inserted by FC2 system