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 作成すると、自動的に破棄されます。 関数を CScrollBar 使用 new してヒープ上にオブジェクトを作成する場合は、ユーザーが Windows スクロール バーを終了したときにオブジェクトを破棄するオブジェクトを呼び出す delete 必要があります。

オブジェクトにメモリを割り当てる場合は、デストラクターをCScrollBarCScrollBarオーバーライドして割り当てを破棄します。

使用CScrollBarに関する関連情報については、「コントロール」を参照してください

継承階層

CObject

CCmdTarget

CWnd

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 を返します。

解説

2 つの手順でオブジェクトを CScrollBar 構築します。 まず、オブジェクトを構築するコンストラクターをCScrollBar呼び出し、次に、関連付けられている Windows スクロール バーを作成して初期化し、オブジェクトにアタッチするCScrollBar呼び出Createしを行います。

のウィンドウ スタイル をスクロール バーに適用します。

  • 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_TRACKPOSSIF_PAGESIF_POS指定します。SIF_RANGE 値の詳細については、以下をnMask参照してくださいSCROLLINFO

戻り値

メッセージが値を取得した場合、戻り値は TRUE. それ以外の場合は、FALSE となります。

解説

GetScrollInfo を使用すると、アプリケーションは 32 ビットのスクロール位置を使用できます。

構造体 SCROLLINFO には、スクロール バーに関する情報が含まれています。これには、スクロールの最小位置と最大位置、ページ サイズ、スクロール ボックスの位置 (つまみ) が含まれます。 構造体の既定値の SCROLLINFO 変更の詳細については、Windows SDK の構造に関するトピックを参照してください。

スクロール バーの位置を示し、CWnd::OnHScrollCWnd::OnVScroll16 ビットの位置データのみを提供する MFC Windows メッセージ ハンドラー。 GetScrollInfoSetScrollInfo 32 ビットのスクロール バー位置データを提供します。 したがって、アプリケーションは、処理中にCWnd::OnHScrollCWnd::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
新しい情報を反映するようにスクロール バーを再描画するかどうかを指定します。 ある場合 bRedrawTRUE、スクロール バーが再描画されます。 表示されている FALSE場合は、再描画されません。 既定では、スクロール バーが再描画されます。

戻り値

成功した場合、戻り値は TRUE. それ以外の場合は、FALSE となります。

解説

フラグ値を含め、構造体パラメーターに SCROLLINFO 必要な値を指定する必要があります。

構造体 SCROLLINFO には、スクロール バーに関する情報が含まれています。これには、スクロールの最小位置と最大位置、ページ サイズ、スクロール ボックスの位置 (つまみ) が含まれます。 構造体の既定値の SCROLLINFO 変更の詳細については、Windows SDK の構造に関するトピックを参照してください。

// 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
新しい位置を反映するようにスクロール バーを再描画するかどうかを指定します。 ある場合 bRedrawTRUE、スクロール バーが再描画されます。 表示されている FALSE場合は、再描画されません。 既定では、スクロール バーが再描画されます。

戻り値

成功した場合のスクロール ボックスの前の位置を指定します。それ以外の場合は 0。

解説

FALSEスクロール バーが短い間隔で 2 回再描画されないように、後続の別の関数の呼び出しによってスクロール バーが再描画されるたびに設定bRedrawされます。

CScrollBar::SetScrollRange の例を参照してください。

CScrollBar::SetScrollRange

指定されたスクロール バーの最小位置と最大位置の値を設定します。

void SetScrollRange(
    int nMinPos,
    int nMaxPos,
    BOOL bRedraw = TRUE);

パラメーター

nMinPos
最小スクロール位置を指定します。

nMaxPos
最大スクロール位置を指定します。

bRedraw
変更を反映するためにスクロール バーを再描画するかどうかを指定します。 ある場合 bRedrawTRUEスクロール バーが再描画され、その場合 FALSEは再描画されません。 既定では再描画されます。

解説

標準のスクロール バーを非表示にするには、0 に設定 nMinPos します nMaxPos

スクロール バー通知メッセージの処理中にスクロール バーを非表示にするには、この関数を呼び出さないでください。

メンバー関数の呼び出しの直後にSetScrollRange呼び出しがSetScrollPos行われる場合は、スクロール バーが 2 回再描画されないように 0 に設定bRedrawSetScrollPosします。

指定されたnMinPosnMaxPos値の差は、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 クラス