共用方式為


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 顯示或隱藏滾動條。

備註

您會在兩個步驟中建立滾動條控件。 首先,呼叫建構函式 CScrollBar 來建構 CScrollBar 對象,然後呼叫 Create 成員函式來建立 Windows 滾動條控件,並將它附加至 CScrollBar 物件。

如果您在對話框內建立 CScrollBar 物件(透過對話框資源), CScrollBar 當使用者關閉對話框時,會自動終結 。

如果您在視窗中建立 CScrollBar 物件,您可能也需要終結它。

如果您在堆疊上建立 CScrollBar 物件,它會自動終結。 如果您使用 函式在堆積new上建立 CScrollBar 物件,則必須在使用者終止 Windows 滾動條時呼叫 delete 對象來終結它。

如果您在物件中 CScrollBar 配置任何記憶體,請覆寫 CScrollBar 解構函式以處置配置。

如需使用 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
滾動條的控制標識碼。

傳回值

如果成功則為非零;否則為 0。

備註

您會在兩個步驟中建構 CScrollBar 物件。 首先,呼叫建構函式,以建構 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,表示箭號已處於要求狀態或發生錯誤。

範例

請參閱 CScrollBar::SetScrollRange 的範例。

CScrollBar::GetScrollBarInfo

擷取 SCROLLBARINFO 結構維護的捲軸相關資訊。

BOOL GetScrollBarInfo(PSCROLLBARINFO pScrollInfo) const;

參數

pScrollInfo
結構的 SCROLLBARINFO 指標。

傳回值

成功時傳回 TRUE,失敗時則傳回 FALSE

備註

此成員函式會模擬訊息的功能 SBM_SCROLLBARINFO ,如 Windows SDK 中所述。

CScrollBar::GetScrollInfo

擷取 SCROLLINFO 結構維護的捲軸相關資訊。

BOOL GetScrollInfo(
    LPSCROLLINFO lpScrollInfo,
    UINT nMask = SIF_ALL);

參數

lpScrollInfo
結構的指標 SCROLLINFO 。 如需此結構的詳細資訊,請參閱 Windows SDK。

nMask
指定要擷取的滾動條參數。 一般用法 ,SIF_ALL指定 、SIF_POSSIF_TRACKPOSSIF_RANGE的組合SIF_PAGE。 如需值的詳細資訊,nMask請參閱 SCROLLINFO

傳回值

如果訊息擷取任何值,則傳回為 TRUE。 否則,便為 FALSE

備註

GetScrollInfo 可讓應用程式使用32位捲動位置。

結構 SCROLLINFO 包含滾動條的相關信息,包括滾動條的下限和最大捲動位置、頁面大小,以及滾動盒的位置(拇指)。 SCROLLINFO如需變更結構預設值的詳細資訊,請參閱 Windows SDK 中的結構主題。

指出滾動條位置CWnd::OnHScrollCWnd::OnVScroll和 的MFC Windows 訊息處理程式只提供16位的位置數據。 GetScrollInfo 並提供 SetScrollInfo 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

將指定滾動條的目前最小和最大滾動條位置複製到 和 lpMaxPoslpMinPos指定的位置。

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每當滾動條被另一個函式的後續呼叫重新繪製時,將 設定bRedraw為 ,以避免在短間隔內重新繪製滾動條兩次。

範例

請參閱 CScrollBar::SetScrollRange 的範例

CScrollBar::SetScrollRange

設定給定捲軸的最小和最大位置值。

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

參數

nMinPos
指定最小卷動位置。

nMaxPos
指定卷動位置上限。

bRedraw
指定是否應該重新繪製滾動條以反映變更。 如果 bRedrawTRUE,則滾動條會重新繪製;如果 FALSE為 ,則不會重新繪製。 預設會重新繪製。

備註

將和 nMaxPos 設定nMinPos為 0 以隱藏標準滾動條。

請勿呼叫此函式,以在處理滾動條通知訊息時隱藏滾動條。

如果的呼叫緊接在對成員函式的呼叫SetScrollPosSetScrollRange之後,請將 設定bRedrawSetScrollPos為0,以防止滾動條重新繪製兩次。

nMaxPosnMinPos指定值之間的差異不得大於 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