CSliderCtrl
类
提供 Windows 公共滑块控件的功能。
语法
class CSliderCtrl : public CWnd
成员
公共构造函数
名称 | 描述 |
---|---|
CSliderCtrl::CSliderCtrl |
构造 CSliderCtrl 对象。 |
公共方法
备注
“滑块控件”(也称为跟踪条)是包含滑块和可选刻度线的窗口。 当用户使用鼠标或方向键移动滑块时,控件会发送通知消息以指示更改。
当您希望用户选择一个离散值或位于一个范围中的一组连续值时,滑动控件很有用。 例如,您可能使用滑块控件允许用户通过将滑块移动到给定刻度线来设置重复速率。
此控件(以及 CSliderCtrl
类)仅适用于在 Windows 95/98 和 Windows NT 版本 3.51 及更高版本下运行的程序。
滑块将按你创建它时指定的增量移动。 例如,如果指定滑块的范围应为 5,则滑块只能占用 6 个位置:滑块控件的左侧有一个位置,范围中每个增量各有一个位置。 通常,这些位置中的每个位置将用一个刻度线标识。
使用构造函数和 CSliderCtrl
的 Create
成员函数创建滑块。 创建滑块控件后,可以使用 CSliderCtrl
中的成员函数更改其许多属性。 可进行的更改包括设置滑块的最小和最大位置、绘制刻度线、设置选择范围以及重新定位滑块。
有关使用 CSliderCtrl
的详细信息,请参阅控件和使用 CSliderCtrl
。
继承层次结构
CSliderCtrl
要求
标头:afxcmn.h
CSliderCtrl::ClearSel
清除滑块控件中的当前选择。
void ClearSel(BOOL bRedraw = FALSE);
参数
bRedraw
重绘标志。 如果此参数为 TRUE
,则在清除所选内容后重新绘制滑块;否则不会重绘滑块。
CSliderCtrl::ClearTics
从滑块控件中删除当前刻度线。
void ClearTics(BOOL bRedraw = FALSE);
参数
bRedraw
重绘标志。 如果此参数为 TRUE
,则在清除刻度线后重新绘制滑块;否则不会重绘滑块。
CSliderCtrl::Create
创建滑块控件并将其附加到 CSliderCtrl
对象。
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
参数
dwStyle
指定滑块控件的样式。 将 Windows SDK 中所述的滑块控件样式的任意组合应用于控件。
rect
指定滑块控件的大小和位置。 它可以是 CRect
对象或 RECT
结构。
pParentWnd
指定滑块控件的父窗口,通常为 CDialog
。 不得为 NULL
。
nID
指定滑块控件的 ID。
返回值
如果初始化成功,则返回非零值;否则返回 0。
备注
分两步构建 CSliderCtrl
。 首先,调用构造函数,然后调用 Create
,这将创建标滑块控件并将其附加到 CSliderCtrl
对象。
根据为 dwStyle
设置的值,滑块控件可以为垂直方向或水平方向。 该控件可以在任意一侧带有刻度线,可以两侧都有刻度线,也可以两侧都没有刻度线。 它还可用于指定一系列连续值。
若要将扩展窗口样式应用于滑块控件,请调用 CreateEx
,而不是 Create
。
CSliderCtrl::CreateEx
创建一个控件(子窗口)并将其与 CSliderCtrl
对象相关联。
virtual BOOL CreateEx(
DWORD dwExStyle,
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
参数
dwExStyle
指定要创建的控件的扩展样式。 有关扩展 Windows 样式的列表,请参阅 Windows SDK 中 CreateWindowEx
的 dwExStyle
参数。
dwStyle
指定滑块控件的样式。 将 Windows SDK 中所述的滑块控件样式的任意组合应用于控件。
rect
对 RECT
结构的引用,该结构描述了要在客户端坐标 pParentWnd
中创建的窗口的大小和位置。
pParentWnd
指向作为控件父级的窗口的指针。
nID
控件的子窗口 ID。
返回值
如果成功,则不为 0;否则为 0。
备注
使用 CreateEx
(而不是 Create
)应用由 Windows 扩展样式前缀 WS_EX_
指定的扩展 Windows 样式。
CSliderCtrl::CSliderCtrl
构造 CSliderCtrl
对象。
CSliderCtrl();
CSliderCtrl::GetBuddy
检索给定位置的滑块控件伙伴窗口的句柄。
CWnd* GetBuddy(BOOL fLocation = TRUE) const;
参数
fLocation
一个指示要检索两个伙伴窗口句柄中哪一个句柄的布尔。 可以是以下其中一个值:
TRUE
检索滑块左侧伙伴的句柄。 如果滑块控件使用TBS_VERT
样式,消息将检索滑块上方的伙伴。FALSE
检索滑块右侧伙伴的句柄。 如果滑块控件使用TBS_VERT
样式,则消息将检索滑块下方的伙伴。
返回值
指向 CWnd
对象的指针,该对象是由 fLocation
指定的位置的伙伴窗口,但如果该位置不存在伙伴窗口,则由 NULL
指定。
备注
此成员函数实现 Win32 消息 TBM_GETBUDDY
的行为,如 Windows SDK 中所述。 有关滑块控件样式的说明,请参阅 Windows SDK 中的跟踪条控件样式。
CSliderCtrl::GetChannelRect
检索滑块控件通道的边框大小和位置。
void GetChannelRect(LPRECT lprc) const;
参数
lprc
指向 CRect
对象的指针,该对象包含函数返回时通道边框的大小和位置。
备注
通道是滑块移动的区域,其中包含选择范围时突出显示的区域。
CSliderCtrl::GetLineSize
检索滑块控件的行大小。
int GetLineSize() const;
返回值
滑块控件的行大小。
备注
行大小会影响 TB_LINEUP
和 TB_LINEDOWN
通知的滑块移动量。 行大小的默认设置为 1。
CSliderCtrl::GetNumTics
检索滑块控件中的刻度线数。
UINT GetNumTics() const;
返回值
滑块控件中的刻度线数。
CSliderCtrl::GetPageSize
检索滑块控件的页面大小。
int GetPageSize() const;
返回值
滑块控件的页面大小。
备注
页面大小会影响 TB_PAGEUP
和 TB_PAGEDOWN
通知的滑块移动量。
CSliderCtrl::GetPos
检索滑块控件中滑块的当前位置。
int GetPos() const;
返回值
当前位置。
CSliderCtrl::GetRange
检索滑块控件中滑块的最大和最小位置。
void GetRange(
int& nMin,
int& nMax) const;
参数
nMin
引用接收最小位置的整数。
nMax
引用接收最大位置的整数。
备注
此函数将值复制到 nMin
和 nMax
引用的整数中。
CSliderCtrl::GetRangeMax
检索滑块控件中滑块的最大位置。
int GetRangeMax() const;
返回值
控件的最大位置。
CSliderCtrl::GetRangeMin
检索滑块控件中滑块的最小位置。
int GetRangeMin() const;
返回值
控件的最小位置。
CSliderCtrl::GetSelection
检索滑块控件中当前所选内容的起始和结束位置。
void GetSelection(
int& nMin,
int& nMax) const;
参数
nMin
对接收当前所选内容起始位置的整数的引用。
nMax
对接收当前所选内容结束位置的整数的引用。
CSliderCtrl::GetThumbLength
检索当前跟踪条控件中滑块的长度。
int GetThumbLength() const;
返回值
滑块的长度(以像素为单位)。
备注
此方法将发送 TBM_GETTHUMBLENGTH
消息,如 Windows SDK 中所述。
CSliderCtrl::GetThumbRect
检索滑块控件中滑块 (thumb) 的边框的大小和位置。
void GetThumbRect(LPRECT lprc) const;
参数
lprc
指向 CRect
对象的指针,该对象包含函数返回时滑块的边框。
CSliderCtrl::GetTic
检索滑块控件中刻度线的位置。
int GetTic(int nTic) const;
参数
nTic
标识刻度线的从零开始的索引。
返回值
指定刻度线的位置,如果 nTic
未指定有效索引,则为 - 1。
CSliderCtrl::GetTicArray
检索包含滑块控件刻度线位置的数组的地址。
DWORD* GetTicArray() const;
返回值
包含滑块控件刻度线位置的数组的地址。
CSliderCtrl::GetTicPos
检索滑块控件中刻度线的当前物理位置。
int GetTicPos(int nTic) const;
参数
nTic
标识刻度线的从零开始的索引。
返回值
指定刻度线在客户端坐标中的物理位置,如果 nTic
未指定有效索引,则为 - 1。
CSliderCtrl::GetToolTips
检索分配给滑块控件的工具提示控件的句柄(如有)。
CToolTipCtrl* GetToolTips() const;
返回值
指向 CToolTipCtrl
对象的指针,如果未使用工具提示,则指向 NULL
。 如果滑块控件不使用 TBS_TOOLTIPS
样式,则返回值为 NULL
。
注解
此成员函数实现 Win32 消息 TBM_GETTOOLTIPS
的行为,如 Windows SDK 中所述。 请注意,此成员函数返回 CToolTipCtrl
对象,而不是控件的句柄。
有关滑块控件样式的说明,请参阅 Windows SDK 中的跟踪条控件样式。
CSliderCtrl::SetBuddy
指定窗口作为滑块控件的伙伴窗口。
CWnd* SetBuddy(
CWnd* pWndBuddy,
BOOL fLocation = TRUE);
参数
pWndBuddy
指向将设置为滑块控件伙伴的 CWnd
对象的指针。
fLocation
指定显示伙伴窗口的位置的值。 此值可以为下列值之一:
TRUE
如果跟踪条控件使用TBS_HORZ
样式,则伙伴将显示在跟踪条左侧。 如果跟踪条使用TBS_VERT
样式,则伙伴显示在跟踪条控件上方。FALSE
如果跟踪条控件使用TBS_HORZ
样式,则伙伴将显示在跟踪条右侧。 如果跟踪条使用TBS_VERT
样式,则伙伴显示在跟踪条控件下方。
返回值
指向以前分配给该位置滑块控件的 CWnd
对象的指针。
注解
此成员函数实现 Win32 消息 TBM_SETBUDDY
的行为,如 Windows SDK 中所述。 请注意,此成员函数使用指向 CWnd
对象的指针,而不是其返回值和参数的窗口句柄。
有关滑块控件样式的说明,请参阅 Windows SDK 中的跟踪条控件样式。
CSliderCtrl::SetLineSize
设置滑块控件的行大小。
int SetLineSize(int nSize);
参数
nSize
滑块控件的新行大小。
返回值
前一行大小。
注解
行大小会影响 TB_LINEUP
和 TB_LINEDOWN
通知的滑块移动量。
CSliderCtrl::SetPageSize
设置滑块控件的页面大小。
int SetPageSize(int nSize);
参数
nSize
滑块控件的新页面大小。
返回值
前一页大小。
注解
页面大小会影响 TB_PAGEUP
和 TB_PAGEDOWN
通知的滑块移动量。
CSliderCtrl::SetPos
设置滑块控件中滑块的当前位置。
void SetPos(int nPos);
参数
nPos
指定新的滑块位置。
CSliderCtrl::SetRange
设置滑块控件中滑块的范围(最小和最大位置)。
void SetRange(
int nMin,
int nMax,
BOOL bRedraw = FALSE);
参数
nMin
滑块的最小位置。
nMax
滑块的最大位置。
bRedraw
重绘标志。 如果此参数为 TRUE
,则在设置范围后重新绘制滑块;否则不会重绘滑块。
CSliderCtrl::SetRangeMax
设置滑块控件中滑块的最大范围。
void SetRangeMax(
int nMax,
BOOL bRedraw = FALSE);
参数
nMax
滑块的最大位置。
bRedraw
重绘标志。 如果此参数为 TRUE
,则在设置范围后重新绘制滑块;否则不会重绘滑块。
CSliderCtrl::SetRangeMin
设置滑块控件中滑块的最小范围。
void SetRangeMin(
int nMin,
BOOL bRedraw = FALSE);
参数
nMin
滑块的最小位置。
bRedraw
重绘标志。 如果此参数为 TRUE
,则在设置范围后重新绘制滑块;否则不会重绘滑块。
CSliderCtrl::SetSelection
设置滑块控件中当前所选内容的起始和结束位置。
void SetSelection(
int nMin,
int nMax);
参数
nMin
滑块的起始位置。
nMax
滑块的结束位置。
CSliderCtrl::SetThumbLength
设置当前跟踪条控件中滑块的长度。
void SetThumbLength(int nLength);
参数
nLength
[in] 滑块的长度(以像素为单位)。
备注
此方法要求将跟踪条控件设置为 TBS_FIXEDLENGTH
样式。
此方法将发送 TBM_SETTHUMBLENGTH
消息,如 Windows SDK 中所述。
示例
第一个代码示例定义变量 m_sliderCtrl
,用于访问当前跟踪条控件。 该示例还定义了变量 thumbLength
,用于存储跟踪条控件 thumb 组件的默认长度。 这些变量用于下一示例。
// Variable to access the slider control.
CSliderCtrl m_sliderCtrl;
// Length of the slider control's thumb.
int thumbLength;
下一个代码示例将跟踪条控件的 thumb 组件设置为其默认长度的两倍。
// Add extra initialization.
// Modify the size of the slider control's thumb.
// First, set the TBS_FIXEDLENGTH style.
m_sliderCtrl.ModifyStyle(0, TBS_FIXEDLENGTH);
thumbLength = m_sliderCtrl.GetThumbLength();
m_sliderCtrl.SetThumbLength(thumbLength * 2);
// End extra initialization.
CSliderCtrl::SetTic
设置滑块控件中刻度线的位置。
BOOL SetTic(int nTic);
参数
nTic
刻度线的位置。 此参数必须指定正值。
返回值
如果设置了刻度线,则为非零;否则为 0。
CSliderCtrl::SetTicFreq
设置滑块中显示的刻度线的频率。
void SetTicFreq(int nFreq);
参数
nFreq
刻度线的频率。
备注
例如,如果频率设置为 2,则在滑块范围内每隔一个增量显示一个刻度线。 频率的默认设置为 1(即范围内的每个增量都与刻度线相关联)。
必须使用 TBS_AUTOTICKS
样式创建控件才能使用此函数。 有关详细信息,请参阅 CSliderCtrl::Create
。
CSliderCtrl::SetTipSide
放置跟踪条控件使用的工具提示控件。
int SetTipSide(int nLocation);
参数
nLocation
表示显示工具提示控件的位置的值。 有关可能值的列表,请参阅 Windows SDK 中所述的 Win32 消息 TBM_SETTIPSIDE
。
返回值
表示工具提示控件先前位置的值。 返回值等于 nLocation
的可能值之一。
注解
此成员函数实现 Win32 消息 TBM_SETTIPSIDE
的行为,如 Windows SDK 中所述。 使用 TBS_TOOLTIPS
样式显示工具提示的滑块控件。 有关滑块控件样式的说明,请参阅 Windows SDK 中的跟踪条控件样式。
CSliderCtrl::SetToolTips
将工具提示控件分配给滑块控件。
void SetToolTips(CToolTipCtrl* pWndTip);
参数
pWndTip
指向 CToolTipCtrl
对象的指针,该对象包含与滑块控件一起使用的工具提示。
备注
此成员函数实现 Win32 消息 TBM_SETTOOLTIPS
的行为,如 Windows SDK 中所述。 使用 TBS_TOOLTIPS
样式创建滑块控件时,它会创建一个显示在滑块旁边的默认工具提示控件,并显示滑块的当前位置。 有关滑块控件样式的说明,请参阅 Windows SDK 中的跟踪条控件样式。