CScrollBar
クラス
Windows のスクロール バー コントロールの機能を提供します。
構文
class CScrollBar : public CWnd
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
CScrollBar::CScrollBar |
CScrollBar オブジェクトを構築します。 |
パブリック メソッド
名前 | 説明 |
---|---|
CScrollBar::Create |
Windows スクロール バーを作成し、 CScrollBar オブジェクトにアタッチします。 |
CScrollBar::EnableScrollBar |
スクロール バーの矢印の一方または両方を有効または無効にします。 |
CScrollBar::GetScrollBarInfo |
SCROLLBARINFO 構造体を使用して、スクロール バーに関する情報を取得します。 |
CScrollBar::GetScrollInfo |
スクロール バーに関する情報を取得します。 |
CScrollBar::GetScrollLimit |
スクロール バーの制限を取得します。 |
CScrollBar::GetScrollPos |
スクロール ボックスの現在位置を取得します。 |
CScrollBar::GetScrollRange |
指定されたスクロール バーの現在の最小および最大のスクロール バー位置を取得します。 |
CScrollBar::SetScrollInfo |
スクロール バーの情報を設定します。 |
CScrollBar::SetScrollPos |
スクロール ボックスの現在位置を設定します。 |
CScrollBar::SetScrollRange |
指定されたスクロール バーの最小位置と最大位置の値を設定します。 |
CScrollBar::ShowScrollBar |
スクロール バーの表示と非表示を切り替えます。 |
解説
スクロール バー コントロールは、2 つの手順で作成します。 まず、コンストラクター CScrollBar
を呼び出して CScrollBar
オブジェクトを構築し、 Create
メンバー関数を呼び出して Windows スクロール バー コントロールを作成し、 CScrollBar
オブジェクトにアタッチします。
ダイアログ ボックス内に (ダイアログ リソースを使用して) CScrollBar
オブジェクトを作成すると、ユーザーがダイアログ ボックスを閉じると、 CScrollBar
が自動的に破棄されます。
ウィンドウ内に CScrollBar
オブジェクトを作成する場合は、破棄が必要になる場合もあります。
スタック上に CScrollBar
オブジェクトを作成すると、自動的に破棄されます。 new
関数を使用してヒープ上にCScrollBar
オブジェクトを作成する場合は、ユーザーが Windows スクロール バーを終了したときにオブジェクトに対してdelete
を呼び出して破棄する必要があります。
CScrollBar
オブジェクトにメモリを割り当てる場合は、CScrollBar
デストラクターをオーバーライドして割り当てを破棄します。
CScrollBar
の使用に関する関連情報については、「Controls」を参照してください。
継承階層
CScrollBar
要件
ヘッダー: afxwin.h
CScrollBar::Create
Windows スクロール バーを作成し、 CScrollBar
オブジェクトにアタッチします。
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
パラメーター
dwStyle
スクロール バーのスタイルを指定します。 スクロール バーにスクロール バー スタイルの任意の組み合わせを適用します。
rect
スクロール バーのサイズと位置を指定します。 RECT
構造体またはCRect
オブジェクトを指定できます。
pParentWnd
スクロール バーの親ウィンドウ (通常は CDialog
オブジェクト) を指定します。 NULL
することはできません。
nID
スクロール バーのコントロール ID。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
CScrollBar
オブジェクトは、2 つの手順で作成します。 まず、 CScrollBar
オブジェクトを構築するコンストラクターを呼び出してから、 Create
を呼び出します。これにより、関連付けられている Windows スクロール バーが作成されて初期化され、 CScrollBar
オブジェクトにアタッチされます。
次の ウィンドウ スタイル をスクロール バーに適用します。
WS_CHILD
いつもWS_VISIBLE
通常はWS_DISABLED
稀にWS_GROUP
コントロールをグループ化するには
例
// Example 1:
// Create a horizontal CScrollBar control as a child window of CMyDialog
// class (a CDialog-derived class). The scroll bar is NOT visible until the
// call ShowScrollBar() is made. m_ScrollBarHorz is of type CScrollBar class,
// and it is a member variable in CMyDialog class.
VERIFY(m_ScrollBarHorz.Create(SBS_HORZ | SBS_TOPALIGN | WS_CHILD,
CRect(5, 5, 100, 30), this, IDC_SCROLLBARCTRL));
m_ScrollBarHorz.ShowScrollBar();
// Example 2:
// Create a vertical CScrollBar control as a child window of CMyDialog
// class (a CDialog-derived class). m_ScrollBarVert is of type CScrollBar
// class, and it is a member variable in CMyDialog class.
VERIFY(m_ScrollBarVert.Create(SBS_VERT | SBS_LEFTALIGN | WS_CHILD |
WS_VISIBLE,
CRect(5, 30, 30, 130), this, IDC_SCROLLBARCTRL));
CScrollBar::CScrollBar
CScrollBar
オブジェクトを構築します。
CScrollBar();
解説
オブジェクトを構築した後、 Create
メンバー関数を呼び出して、Windows のスクロール バーを作成して初期化します。
例
CScrollBar m_ScrollBarHorz;
CScrollBar::EnableScrollBar
スクロール バーの矢印の一方または両方を有効または無効にします。
BOOL EnableScrollBar(UINT nArrowFlags = ESB_ENABLE_BOTH);
パラメーター
nArrowFlags
スクロール矢印を有効にするか無効にするか、どの矢印を有効または無効にするかを指定します。 このパラメーターには、次の 値のいずれかを指定できます。
ESB_ENABLE_BOTH
スクロール バーの両方の矢印を有効にします。ESB_DISABLE_LTUP
水平スクロール バーの左矢印または垂直スクロール バーの上矢印を無効にします。ESB_DISABLE_RTDN
水平スクロール バーの右矢印または垂直スクロール バーの下矢印を無効にします。ESB_DISABLE_BOTH
スクロール バーの両方の矢印を無効にします。
戻り値
矢印が指定されたとおりに有効または無効になっている場合は 0 以外。それ以外の場合は 0。矢印が既に要求された状態であるか、エラーが発生したことを示します。
例
CScrollBar::SetScrollRange
の例を参照してください。
CScrollBar::GetScrollBarInfo
SCROLLBARINFO
構造体がスクロール バーについて保持している情報を取得します。
BOOL GetScrollBarInfo(PSCROLLBARINFO pScrollInfo) const;
パラメーター
pScrollInfo
SCROLLBARINFO
構造体へのポインター。
戻り値
正常に終了した場合は、TRUE
を返します。それ以外の場合は、FALSE
を返します。
解説
このメンバー関数は、Windows SDK で説明されているように、 SBM_SCROLLBARINFO
メッセージの機能をエミュレートします。
CScrollBar::GetScrollInfo
SCROLLINFO
構造体がスクロール バーについて保持している情報を取得します。
BOOL GetScrollInfo(
LPSCROLLINFO lpScrollInfo,
UINT nMask = SIF_ALL);
パラメーター
lpScrollInfo
SCROLLINFO
構造体へのポインター。 この構造の詳細については、Windows SDK を参照してください。
nMask
取得するスクロール バーのパラメーターを指定します。 一般的な使用法 SIF_ALL
、 SIF_PAGE
、 SIF_POS
、 SIF_TRACKPOS
、および SIF_RANGE
の組み合わせを指定します。 nMask
値の詳細については、SCROLLINFO
を参照してください。
戻り値
メッセージが値を取得した場合、戻り値は TRUE
。 それ以外の場合は、FALSE
となります。
解説
GetScrollInfo
を使用すると、アプリケーションは 32 ビットのスクロール位置を使用できます。
SCROLLINFO
構造体には、スクロール バーに関する情報 (スクロールの最小位置と最大位置、ページ サイズ、スクロール ボックスの位置 (つまみ) など) が含まれます。 構造体の既定値の変更の詳細については、Windows SDK の SCROLLINFO
構造に関するトピックを参照してください。
スクロール バーの位置、 CWnd::OnHScroll
、および CWnd::OnVScroll
を示す MFC Windows メッセージ ハンドラーは、16 ビットの位置データのみを提供します。 GetScrollInfo
32 ビットのスクロール バー位置データを提供 SetScrollInfo
。 したがって、アプリケーションは、CWnd::OnHScroll
またはCWnd::OnVScroll
の処理中にGetScrollInfo
を呼び出して、32 ビットのスクロール バー位置データを取得できます。
例
CWnd::OnHScroll
の例を参照してください。
CScrollBar::GetScrollLimit
スクロール バーの最大スクロール位置を取得します。
int GetScrollLimit();
戻り値
成功した場合のスクロール バーの最大位置を指定します。それ以外の場合は 0。
例
CWnd::OnHScroll
の例を参照してください。
CScrollBar::GetScrollPos
スクロール ボックスの現在位置を取得します。
int GetScrollPos() const;
戻り値
成功した場合のスクロール ボックスの現在位置を指定します。それ以外の場合は 0。
解説
現在の位置は、現在のスクロール範囲に依存する相対値です。 たとえば、スクロール範囲が 100 ~ 200 で、スクロール ボックスがバーの中央にある場合、現在の位置は 150 です。
例
CWnd::OnHScroll
の例を参照してください。
CScrollBar::GetScrollRange
指定したスクロール バーの現在の最小および最大スクロール バーの位置を、 lpMinPos
および lpMaxPos
で指定された場所にコピーします。
void GetScrollRange(
LPINT lpMinPos,
LPINT lpMaxPos) const;
パラメーター
lpMinPos
最小位置を受け取る整数変数を指します。
lpMaxPos
最大位置を受け取る整数変数を指します。
解説
スクロール バー コントロールの既定の範囲は空です (両方の値は 0 です)。
例
CWnd::OnHScroll
の例を参照してください。
CScrollBar::SetScrollInfo
SCROLLINFO
構造体がスクロール バーに関して保持する情報を設定します。
BOOL SetScrollInfo(
LPSCROLLINFO lpScrollInfo,
BOOL bRedraw = TRUE);
パラメーター
lpScrollInfo
SCROLLINFO
構造体へのポインター。
bRedraw
新しい情報を反映するようにスクロール バーを再描画するかどうかを指定します。 bRedraw
がTRUE
されている場合は、スクロール バーが再描画されます。 FALSE
されている場合は、再描画されません。 既定では、スクロール バーが再描画されます。
戻り値
成功した場合、戻り値は TRUE
。 それ以外の場合は、FALSE
となります。
解説
フラグ値を含め、 SCROLLINFO
構造体パラメーターに必要な値を指定する必要があります。
SCROLLINFO
構造体には、スクロール バーに関する情報 (スクロールの最小位置と最大位置、ページ サイズ、スクロール ボックスの位置 (つまみ) など) が含まれます。 構造体の既定値の変更の詳細については、Windows SDK の SCROLLINFO
構造に関するトピックを参照してください。
例
// Set SCROLLINFO for the scroll bar. m_ScrollBarHorz is of type
// CScrollBar class, and it is a member variable in CMyDialog class.
SCROLLINFO info;
info.cbSize = sizeof(SCROLLINFO);
info.fMask = SIF_ALL;
info.nMin = 0;
info.nMax = 10;
info.nPage = 2;
info.nPos = 5;
info.nTrackPos = 2;
m_ScrollBarHorz.SetScrollInfo(&info);
CScrollBar::SetScrollPos
スクロール ボックスの現在位置を nPos
で指定された位置に設定し、指定した場合は、新しい位置を反映するようにスクロール バーを再描画します。
int SetScrollPos(
int nPos,
BOOL bRedraw = TRUE);
パラメーター
nPos
スクロール ボックスの新しい位置を指定します。 スクロール範囲内である必要があります。
bRedraw
新しい位置を反映するようにスクロール バーを再描画するかどうかを指定します。 bRedraw
がTRUE
されている場合は、スクロール バーが再描画されます。 FALSE
されている場合は、再描画されません。 既定では、スクロール バーが再描画されます。
戻り値
成功した場合のスクロール ボックスの前の位置を指定します。それ以外の場合は 0。
解説
スクロール バーが短い間隔で 2 回再描画されないように、スクロール バーが別の関数の後続の呼び出しによって再描画されるたびに、 bRedraw
を FALSE
に設定します。
例
CScrollBar::SetScrollRange の例を参照してください。
CScrollBar::SetScrollRange
指定されたスクロール バーの最小位置と最大位置の値を設定します。
void SetScrollRange(
int nMinPos,
int nMaxPos,
BOOL bRedraw = TRUE);
パラメーター
nMinPos
最小スクロール位置を指定します。
nMaxPos
最大スクロール位置を指定します。
bRedraw
変更を反映するためにスクロール バーを再描画するかどうかを指定します。 bRedraw
がTRUE
場合、スクロール バーは再描画されます。FALSE
場合は、再描画されません。 既定では再描画されます。
解説
標準のスクロール バーを非表示にするには、 nMinPos
と nMaxPos
を 0 に設定します。
スクロール バー通知メッセージの処理中にスクロール バーを非表示にするには、この関数を呼び出さないでください。
SetScrollRange
の呼び出しが SetScrollPos
メンバー関数の呼び出しの直後にある場合は、スクロール バーが 2 回再描画されないように、SetScrollPos
のbRedraw
を 0 に設定します。
nMinPos
とnMaxPos
で指定した値の差は、32,767 を超えてはなりません。 スクロール バー コントロールの既定の範囲は空です ( nMinPos
と nMaxPos
の両方が 0 です)。
例
// Sets minimum (0) and maximum (10) position values for the
// CScrollBar control. m_ScrollBarVert is of type CScrollBar class,
// and it is a member variable in CMyDialog class.
m_ScrollBarVert.SetScrollRange(0, 10);
// Set the position of the scroll box.
m_ScrollBarVert.SetScrollPos(5);
// Disable the down arrow of the scroll bar. By default, both arrows
// are enabled.
m_ScrollBarVert.EnableScrollBar(ESB_DISABLE_DOWN);
CScrollBar::ShowScrollBar
スクロール バーの表示と非表示を切り替えます。
void ShowScrollBar(BOOL bShow = TRUE);
パラメーター
bShow
スクロール バーを表示するか非表示にするかを指定します。 このパラメーターが TRUE
されている場合、スクロール バーが表示されます。それ以外の場合は非表示になります。
解説
アプリケーションでは、スクロール バー通知メッセージの処理中にスクロール バーを非表示にするために、この関数を呼び出さないでください。
例
CScrollBar::Create
の例を参照してください。
関連項目
CWnd
クラス
階層図
CButton
クラス
CComboBox
クラス
CEdit
クラス
CListBox
クラス
CStatic
クラス
CDialog
クラス