
CScrollViewクラスはCViewスクロールの機能とは。
標準自分で、メッセージ マップOnHScrollとOnVScrollメンバー関数をオーバーライドすることでCViewから派生した任意のクラスでスクロールを処理することができます。しかし、 CScrollView CViewの機能を次の機能を追加します。:
自分のメッセージ マップOnMouseWheelとOnRegisteredMouseWheelメンバー関数をオーバーライドすることによってスクロール マウスのホイールを処理することができます。CScrollViewは、これらのメンバー関数する推奨の動作をサポート WM_MOUSEWHEELホイールの回転メッセージ。
自動スクロールを利用するには、 CViewからの代わりにCScrollViewからビュー クラスを派生します。ビューが作成、ドキュメントのサイズに基づいて、スクロール可能なビューのサイズを計算する場合に最初は、 CView::OnInitialUpdateまたはCView::OnUpdateのいずれかのオーバーライドからSetScrollSizesメンバー関数を呼び出します。(ドキュメントのサイズをクエリするには、独自のコードを記述する必要があります。例についてを参照してください 強化回 Visual の C++ のチュートリアル)。
SetScrollSizesメンバー関数の呼び出しは、ビューのマッピング モード、スクロール ビュー、および水平方向および垂直方向のスクロール量の合計サイズを設定します。すべてのサイズは論理単位です。ビューの論理サイズは、通常、ドキュメントに格納されたデータから計算されますが、いくつかのケースで、固定サイズを指定することがあります。両方のアプローチの例についてを参照してくださいCScrollView::SetScrollSizes。
水平方向および垂直方向に論理単位でスクロールする量を指定します。スクロール バー シャフト、スクロール ボックスの外側をクリックすると既定では、 CScrollViewは「ページ」スクロールします。スクロール矢印は、スクロール バーのいずれかの端をクリックすると、 CScrollViewは「ライン」をスクロール既定では、ページ ビューの合計サイズの 1/10 です。ページ サイズの 1/10 です。これらの既定値をオーバーライドするカスタム サイズSetScrollSizesメンバー関数に渡します。たとえば、水平方向のサイズにいくつかの割合の合計サイズと、垂直方向のサイズは行の高さを幅の現在のフォントで設定可能性があります。
スクロールではなく、 CScrollViewは自動的に現在のウィンドウのサイズを拡張できます。このモードでは、ビューはスクロール バーを持たず、論理ビューを拡大または、ウィンドウのクライアント領域を正確に適合する縮小します。この目盛に合わせる機能を使用するには、 CScrollView::SetScaleToFitSizeを呼び出します。( SetScaleToFitSizeまたはSetScrollSizes、しかし両方ではなくを呼び出します)。
前に、 OnDraw 派生ビュー クラスのメンバー関数と呼ばれる、 CScrollViewはビューポートの原点を渡します、 CPaintDCデバイス コンテキスト オブジェクトを自動的に調整されますOnDraw。
スクロール ウィンドウのビューポートの原点を調整するには、 CScrollViewにCView::OnPrepareDCよりも優先されます。この調整はCScrollViewに渡します、 CPaintDCデバイス コンテキストを自動で OnDraw 、しかし、 CScrollView::OnPrepareDC自分で使用する、 CClientDCなど他のデバイス コンテキストを呼び出す必要があります。ペン、背景色、およびその他の描画属性を設定がスケーリングを行う基本クラスを呼び出してするには、 CScrollView::OnPrepareDCをオーバーライドすることができます。
スクロール バーがビューの基準に 3 つの場所で、次に示すよう表示することができます。:
CScrollViewの使い方の詳細についてを参照してください ドキュメント/ビュー アーキテクチャのトピックと 派生したビュー クラスでVisual の C++ プログラマのガイド。
#include lt;afxwin.h>
サンプル特価; MFC サンプル DIBLOOK(&N)
参照特価;CView、 CSplitterWnd(&N)