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
的相關資訊,請參閱 控制項 。
繼承階層架構
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_POS
、 SIF_TRACKPOS
和 SIF_RANGE
的組合 SIF_PAGE
。 如需值的詳細資訊, nMask
請參閱 SCROLLINFO
。
傳回值
如果訊息擷取任何值,則傳回為 TRUE
。 否則,便為 FALSE
。
備註
GetScrollInfo
可讓應用程式使用 32 位捲動位置。
結構 SCROLLINFO
包含捲軸的相關資訊,包括捲軸的下限和最大捲動位置、頁面大小,以及捲動方塊的位置(拇指)。 SCROLLINFO
如需變更結構預設值的詳細資訊,請參閱 Windows SDK 中的結構主題。
指出捲軸位置 CWnd::OnHScroll
CWnd::OnVScroll
和 的 MFC Windows 訊息處理常式只提供 16 位的位置資料。 GetScrollInfo
並提供 SetScrollInfo
32 位的捲軸位置資料。 因此,應用程式可以在處理 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
將指定捲軸的目前最小和最大捲軸位置複製到 和 lpMaxPos
所 lpMinPos
指定的位置。
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
包含捲軸的相關資訊,包括捲軸的下限和最大捲動位置、頁面大小,以及捲動方塊的位置(拇指)。 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
指定是否應重新繪製捲軸以反映新位置。 如果 bRedraw
為 TRUE
,則會重新繪製捲軸。 FALSE
如果是 ,則不會重新繪製。 捲軸預設會重新繪製。
傳回值
如果成功,指定捲動方塊的上一個位置;否則為 0。
備註
FALSE
每當捲軸被另一個函式的後續呼叫重新繪製時,將 設定 bRedraw
為 ,以避免在短間隔內重新繪製捲軸兩次。
範例
請參閱 CScrollBar::SetScrollRange 的範例 。
CScrollBar::SetScrollRange
設定給定捲軸的最小和最大位置值。
void SetScrollRange(
int nMinPos,
int nMaxPos,
BOOL bRedraw = TRUE);
參數
nMinPos
指定最小捲動位置。
nMaxPos
指定捲動位置上限。
bRedraw
指定是否應該重新繪製捲軸以反映變更。 如果 bRedraw
為 TRUE
,則捲軸會重新繪製;如果 FALSE
為 ,則不會重新繪製。 預設會重新繪製。
備註
將 和 nMaxPos
設定 nMinPos
為 0 以隱藏標準捲軸。
請勿呼叫此函式,以在處理捲軸通知訊息時隱藏捲軸。
如果 的呼叫緊接在對成員函式的呼叫 SetScrollPos
SetScrollRange
之後,請將 設定 bRedraw
SetScrollPos
為 0,以防止捲軸重新繪製兩次。
和 nMaxPos
所 nMinPos
指定值之間的差異不得大於 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
類
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應