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_ISOTROPIC と MM_ANISOTROPIC は、CScrollView では使いません。 クラス ライブラリには、ビューをウィンドウのサイズに伸縮する SetScaleToFitSize メンバー関数が用意されています。 表の 3 列目の項目は、座標の方向についての説明です。
sizeTotal
スクロール ビューの全体のサイズです。 cx メンバーは水平方向のスクロール量を保持します。 cy メンバーは垂直方向のスクロール量を保持します。 サイズは論理単位です。 cx と cy はどちらも 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::SetScaleToFitSize
CScrollView::GetDeviceScrollSizes