CSliderCtrl

提供 Windows 公共滑块控件的功能。

语法

class CSliderCtrl : public CWnd

成员

公共构造函数

名称 描述
CSliderCtrl::CSliderCtrl 构造 CSliderCtrl 对象。

公共方法

名称 描述
CSliderCtrl::ClearSel 清除滑块控件中的当前选择。
CSliderCtrl::ClearTics 从滑块控件中删除当前刻度线。
CSliderCtrl::Create 创建滑块控件并将其附加到 CSliderCtrl 对象。
CSliderCtrl::CreateEx 创建具有指定 Windows 扩展样式的滑块控件,并将其附加到 CSliderCtrl 对象。
CSliderCtrl::GetBuddy 检索给定位置的滑块控件伙伴窗口的句柄。
CSliderCtrl::GetChannelRect 检索滑块控件通道的大小。
CSliderCtrl::GetLineSize 检索滑块控件的行大小。
CSliderCtrl::GetNumTics 检索滑块控件中的刻度线数。
CSliderCtrl::GetPageSize 检索滑块控件的页面大小。
CSliderCtrl::GetPos 检索滑块的当前位置。
CSliderCtrl::GetRange 检索滑块的最小和最大位置。
CSliderCtrl::GetRangeMax 检索滑块的最大位置。
CSliderCtrl::GetRangeMin 检索滑块的最小位置。
CSliderCtrl::GetSelection 检索当前所选内容的范围。
CSliderCtrl::GetThumbLength 检索当前跟踪条控件中滑块的长度。
CSliderCtrl::GetThumbRect 检索滑块控件 thumb 的大小。
CSliderCtrl::GetTic 检索指定刻度线的位置。
CSliderCtrl::GetTicArray 检索滑块控件的刻度线位置数组。
CSliderCtrl::GetTicPos 检索指定刻度线在客户端坐标中的位置。
CSliderCtrl::GetToolTips 检索分配给滑块控件的工具提示控件的句柄(如有)。
CSliderCtrl::SetBuddy 指定窗口作为滑块控件的伙伴窗口。
CSliderCtrl::SetLineSize 设置滑块控件的行大小。
CSliderCtrl::SetPageSize 设置滑块控件的页面大小。
CSliderCtrl::SetPos 设置滑块的当前位置。
CSliderCtrl::SetRange 设置滑块的最小和最大位置。
CSliderCtrl::SetRangeMax 设置滑块的最大位置。
CSliderCtrl::SetRangeMin 设置滑块的最小位置。
CSliderCtrl::SetSelection 设置当前所选内容的范围。
CSliderCtrl::SetThumbLength 设置当前跟踪条控件中滑块的长度。
CSliderCtrl::SetTic 设置指定刻度线的位置。
CSliderCtrl::SetTicFreq 设置每个滑块控件增量的刻度线频率。
CSliderCtrl::SetTipSide 放置跟踪条控件使用的工具提示控件。
CSliderCtrl::SetToolTips 将工具提示控件分配给滑块控件。

备注

“滑块控件”(也称为跟踪条)是包含滑块和可选刻度线的窗口。 当用户使用鼠标或方向键移动滑块时,控件会发送通知消息以指示更改。

当您希望用户选择一个离散值或位于一个范围中的一组连续值时,滑动控件很有用。 例如,您可能使用滑块控件允许用户通过将滑块移动到给定刻度线来设置重复速率。

此控件(以及 CSliderCtrl 类)仅适用于在 Windows 95/98 和 Windows NT 版本 3.51 及更高版本下运行的程序。

滑块将按你创建它时指定的增量移动。 例如,如果指定滑块的范围应为 5,则滑块只能占用 6 个位置:滑块控件的左侧有一个位置,范围中每个增量各有一个位置。 通常,这些位置中的每个位置将用一个刻度线标识。

使用构造函数和 CSliderCtrlCreate 成员函数创建滑块。 创建滑块控件后,可以使用 CSliderCtrl 中的成员函数更改其许多属性。 可进行的更改包括设置滑块的最小和最大位置、绘制刻度线、设置选择范围以及重新定位滑块。

有关使用 CSliderCtrl 的详细信息,请参阅控件使用 CSliderCtrl

继承层次结构

CObject

CCmdTarget

CWnd

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 中 CreateWindowExdwExStyle 参数。

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_LINEUPTB_LINEDOWN 通知的滑块移动量。 行大小的默认设置为 1。

CSliderCtrl::GetNumTics

检索滑块控件中的刻度线数。

UINT GetNumTics() const;

返回值

滑块控件中的刻度线数。

CSliderCtrl::GetPageSize

检索滑块控件的页面大小。

int GetPageSize() const;

返回值

滑块控件的页面大小。

备注

页面大小会影响 TB_PAGEUPTB_PAGEDOWN 通知的滑块移动量。

CSliderCtrl::GetPos

检索滑块控件中滑块的当前位置。

int GetPos() const;

返回值

当前位置。

CSliderCtrl::GetRange

检索滑块控件中滑块的最大和最小位置。

void GetRange(
    int& nMin,
    int& nMax) const;

参数

nMin
引用接收最小位置的整数。

nMax
引用接收最大位置的整数。

备注

此函数将值复制到 nMinnMax 引用的整数中。

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_LINEUPTB_LINEDOWN 通知的滑块移动量。

CSliderCtrl::SetPageSize

设置滑块控件的页面大小。

int SetPageSize(int nSize);

参数

nSize
滑块控件的新页面大小。

返回值

前一页大小。

注解

页面大小会影响 TB_PAGEUPTB_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 中的跟踪条控件样式

另请参阅

MFC 示例 CMNCTRL2
CWnd
层次结构图
CProgressCtrl