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
類