次の方法で共有


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」を参照してください。

継承階層

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

解説

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

戻り値

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

解説

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

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

CScrollBar::SetScrollRange

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

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

パラメーター

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

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

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

解説

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

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

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

nMinPosnMaxPosで指定した値の差は、32,767 を超えてはなりません。 スクロール バー コントロールの既定の範囲は空です ( nMinPosnMaxPos の両方が 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 クラス