Share via


CScrollView::SetScrollSizes

ビューが更新される直前に、SetScrollSizes を呼び出します。

void SetScrollSizes(
   int nMapMode,
   SIZE sizeTotal,
   const SIZE& sizePage = sizeDefault,
   const SIZE& sizeLine = sizeDefault 
);

パラメーター

  • nMapMode
    ビューに設定するマップ モード。 次の値を使用できます。

    マップ モード

    論理単位

    y 軸を拡張する正方向

    MM_TEXT

    1 ピクセル

    下方向

    MM_HIMETRIC

    0.01 mm

    上方向

    MM_TWIPS

    1/1440 インチ

    上方向

    MM_HIENGLISH

    0.001 インチ

    上方向

    MM_LOMETRIC

    0.1 mm

    上方向

    MM_LOENGLISH

    0.01 インチ

    上方向

    これらのモードはすべて Windows で定義されています。 2 つの標準マップ モード MM_ISOTROPICMM_ANISOTROPIC は、CScrollView では使いません。 クラス ライブラリには、ビューをウィンドウのサイズに伸縮する SetScaleToFitSize メンバー関数が用意されています。 表の 3 列目の項目は、座標の方向についての説明です。

  • sizeTotal
    スクロール ビューの全体のサイズです。 cx メンバーは水平方向のスクロール量を保持します。 cy メンバーは垂直方向のスクロール量を保持します。 サイズは論理単位です。 cxcy はどちらも 0 以上にする必要があります。

  • sizePage
    スクロール バー シャフトでのマウス クリックに応答してスクロールするときの、水平および垂直の各方向へのスクロール量です。 cx メンバーは水平方向のスクロール量を持ちます。 cy メンバーは垂直方向のスクロール量を持ちます。

  • sizeLine
    スクロール バーの矢印ボタンでのマウス クリックに応答してスクロールするときの、水平および垂直の各方向へのスクロール量です。 cx メンバーは水平方向のスクロール量を持ちます。 cy メンバーは垂直方向のスクロール量を持ちます。

解説

たとえば、ドキュメントが初期表示されるとき、またはサイズが変更されたときなどに、スクロールの特性を調整するためにオーバーライドした OnUpdate メンバー関数から呼び出します。

通常、ドキュメント クラスからの派生クラスで用意される GetMyDocSize などと名付けたドキュメント メンバー関数を呼び出すことにより、ビューに関連付けられたドキュメントからサイズ情報を取得します。 次のコードは、そのアプローチを示します。

CMyScrollDoc* pMyDoc = (CMyScrollDoc*)GetDocument();
SetScrollSizes(nMapMode, pMyDoc->GetMyDocSize());

一方、固定サイズを設定するには、次のようにします。

SetScrollSizes(nMapMode, CSize(100, 100));

MM_ISOTROPIC または MM_ANISOTROPIC 以外の Windows のマップ モードを設定する必要があります。 自然なマップ モードを使いたいときは、SetScrollSizes の代わりに SetScaleToFitSize を呼び出します。

使用例

void CMyScrollView::OnUpdate(CView* /*pSender*/, LPARAM /*lHint*/, 
   CObject* /*pHint*/)
{
   // Implement a GetMyDocSize() member function in 
   // your document class; it returns a CSize.
   CMyScrollDoc* pMyDoc = (CMyScrollDoc*)GetDocument();
   SetScrollSizes(MM_LOENGLISH, pMyDoc->GetMyDocSize());
   ResizeParentToFit();   // Default bShrinkOnly argument
}
void CMyScrollView::OnInitialUpdate()
{
   CScrollView::OnInitialUpdate();

   // The GetMyDocSize() member function is implemented in 
   // your document class. The return type is CSize.
   CMyScrollDoc* pMyDoc = (CMyScrollDoc*)GetDocument();
   SetScrollSizes(MM_TEXT, pMyDoc->GetMyDocSize());
}

必要条件

**ヘッダー:**afxwin.h

参照

参照

CScrollView クラス

階層図

CScrollView::SetScaleToFitSize

CScrollView::GetDeviceScrollSizes

CScrollView::GetTotalSize

その他の技術情報

CScrollView のメンバー