共用方式為


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。 捲軸控制項的預設範圍是空的(和 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