CSpinButtonCtrl
一 个 “ 旋 转 按 钮 控 件 ” ( 也 称 为 上 下 控 件 ) 是 一 对 箭 头 按 钮 , 用 户 点 击 它 们 来增 加 或 减 小 一 个 值 , 比 如 一 个 滚 动 位 置 或 显 示 在 相 应 控 件 中 的 一 个 数 字 。 与 一
个 旋 转 按 钮 控 件 相 联 系 的 值 被 称 为 它 的 当 前 位 置 。 一 个 旋 转 控 件 通 常 是 与 一 个相 伴 的 控 件 一 起 使 用 的 , 称 为 “ 伙 伴 窗 口 ” 。
CSpinButtonCtrl 类 提 供 了 Windows 通 用 旋 转 按 钮 控 件 的 功 能 。 这 个 控 件 ( 也 就是 CSpinButtonCtrl 类 ) 只 对 运 行 在 Windows95 和 W indows NT3.51 或 更 高 版 本下 的 程 序 来 说 是 可 用 的 。
对 用 户 来 说 , 一 个 旋 转 按 钮 控 件 和 它 的 伙 伴 窗 口 看 起 来 通 常 就 象 一 个 单 一 的 控件 。 你 可 以 指 定 一 个 旋 转 按 钮 控 件 自 动 将 它 自 己 定 位 在 它 的 伙 伴 窗 口 的 旁 边 , 并 且 它 自 动 将 它 的 伙 伴 窗 口 的 标 题 设 置 为 它 的 当 前 位 置 。 可 以 将 一 个 旋 转 按 钮控 件 与 一 个 编 辑 控 件 一 起 使 用 , 以 提 示 用 户 进 行 数 字 输 入 。
点 击 向 上 箭 头 使 当 前 位 置 向 最 大 值 方 向 移 动 , 而 点 击 向 下 箭 头 使 当 前 位 置 向 最小 值 的 方 向 移 动 。 缺 省 的 , 最 小 值 是 100 , 最 大 值 是 0 。 任 何 时 候 , 最 小 值 的设 置 都 大 于 最 大 值 ( 例 如 , 当 使 用 缺 省 值 时 ) , 点 击 向 上 箭 头 减 少 位 置 值 , 而
点 击 向 下 箭 头 则 增 加 它 。
- 个 没 有 伙 伴 窗 口 的 旋 转 按 钮 控 件 就 象 简 化 了 的 滚 动 条
。 例 如 , 一 个 tab 控 件有 时 显 示 一 个 旋 转 按 钮 控 件 来 使 它 的 用 户 能 够 滚 动 其 它 的 tab 进 入 视 。
有 关 使 用 CSpinButtonCtrl 的 更 多 信 息 , 参 见“ V isual C++ 程 序 员 指 南 ” 中 的“ 控件 主 题 ” 和 “ 使 用 CSpinButtonCtrl ” 。
#include <afxcmn.h>
请 参 阅 CSliderCtrl
CSpinButtonCtrl 类 成 员
Construction
CspinButtonCtrl 构 造 一 个 CSpinButtonCtrl 对 象
Create 创 建 一 个 旋 转 按 钮 控 件 并 将 它 连 接 到 一 个
CSpinButtonCtrl 对 象
Attribute s SetAccel 为 一 个 旋 转 按 钮 控 件 设 置 加 速
GetAccel 获 取 一 个 旋 转 按 钮 控 件 的 加 速 信 息
SetBase 为 一 个 旋 转 按 钮 控 件 设 置 基 数
GetBase 获 取 一 个 旋 转 按 钮 控 件 的 当 前 基 数
SetBuddy 为 一 个 旋 转 按 钮 控 件 设 置 伙 伴 窗 口
GetBuddy 获 取 指 向 当 前 伙 伴 窗 口 的 指 针
SetPos 设 置 控 件 的 当 前 位 置
GetPos 获 取 一 个 旋 转 按 钮 控 件 的 当 前 位 置
SetRange 设 置 一 个 旋 转 按 钮 控 件 的 上 限 和 下 限 ( 范 围 )
GetRange 获 取 一 个 旋 转 按 钮 控 件 的 上 限 和 下 限 ( 范 围 )
SetRange 32 设 置 旋 转 按 钮 控 件 的 32 位 范 围
G etRange 32 获 取 旋 转 按 钮 控 件 的 32 位 范 围
成 员 函 数
CSpinButtonCtrl::Create
BOOL Create( DWORD dwStyle , const RECT& rect , CWnd* pParentWnd , UINT
nID );
返 回 值
如 果 初 始 化 成 功 则 返 回 非 零 值 ; 否 则 返 回 0 。
参 数
dwStyle
指 定 旋 转 按 钮 控 件 的 风 格 。 可 以 将 旋 转 控 件 风 格 的 任 何 组 合 应 用 到 这 个 控
件 。
rect
指 定 旋 转 按 钮 控 件 的 大 小 和 位 置 。 它 可 以 是 一 个 CRect 对 象 或 一 个 RECT
结 构 。
pPrentWnd
一 个 指 向 旋 转 控 件 的 父 窗 口 的 指 针 , 该 窗 口 通 常 是 一 个 CDialog 。 它 必 须不 是 NULL 。
nID
指 定 旋 转 控 件 的 ID 。
说 明
构 造 一 个 CSpinButtonCtrl 对 象 要 分 两 步 。 首 先 调 用 构 造 函 数 , 然 后 调 用 Create , 该 函 数 创 建 旋 转 按 钮 控 件 并 将 它 与 CSpinButtonCtrl 对 象 连 接 。
可 以 指 定 下 面 的 风 格 给 旋 转 按 钮 控 件 :
-
UDS_HORZ 控 件 的 箭 头 指 向 左 和 右 , 而 不 是 指 向 上 和 下
。
-
UDS_WRAP 如 果 控 件 的 增 加 或 减 小 超 过 了 结 尾 或 开 始 ,
使 控 件 可 以 “ 环绕 ” 。
-
UDS_ARROWKEYS 当 按 下 向 上 和 向 下 键 时 , 使 控 件 可 以 增 加
或 减 小 。
-
UDS_SETBUDDYINT 当 位 置 改 变 时 , 使 控 件 设 置 伙 伴 窗 口 的
文 本 ( 使 用
WM_SETTEXT 消 息 ) 。 文 本 是 按 十 进 制 或 十 六 进 制 格 式 化 后 的 位 置 值 。
-
UDS_NOTHOUSANDS 不 要 在 每 隔 三 个 十 进 制 数 字 的 地 方 加 千
分 隔 符 。
-
UDS_AUTOBUDDY 自 动 选 择 一 个 Z-order 中 的 前 一 个 窗 口 作 为
控 件 的 伙伴 窗 口 。
-
UDS_ALIGNRIGHT 将 旋 转 按 钮 窗 口 定 位 在 伙 伴 窗 口 的 右 边
。 伙 伴 窗 口 的宽 度 被 减 小 来 适 应 此 控 件 的 宽 度 。
-
UDS_ALIGNLEFT 将 旋 转 按 钮 窗 口 定 位 在 伙 伴 窗 口 的 右 边 。
伙 伴 窗 口 被
移 动 到 右 边 , 并 且 它 的 宽 度 被 减 小 来 适 应 此 控 件 的 宽 度 。
请 参 阅 CSpinButtonCtrl::CSpinButtonCtrl
CSpinButtonCtrl::CSpinButtonCtrl
CSpinButtonCtrl( );
说 明
此 成 员 函 数 用 来 构 造 一 个 CSpinButtonCtrl 对 象 。
请 参 阅 CSpinButtonCtrl::Create
CSpinButtonCtrl::GetAccel
UINT GetAccel( int nAccel , UDACCEL* pAccel ) const;
返 回 值
返 回 所 获 取 的 加 速 器 结 构 的 数 目 。
参 数
nAccel
由 pAccel 指 定 的 数 组 中 的 元 素 数 目 。
pAccel
指 向 一 个 UDACCEL 结 构 数 组 的 指 针 , 该 数 组 用 来 接 收 加 速 信 息 。
说 明
此 成 员 函 数 用 来 获 取 一 个 旋 转 按 钮 控 件 的 加 速 信 息 。
请 参 阅 CSpinButtonCtrl::SetAccel
CSpinButtonCtrl::GetBase
UINT GetBase( ) const;
返 回 值
返 回 当 前 的 基 数 值 。
说 明
此 成 员 函 数 用 来 获 取 一 个 旋 转 按 钮 控 件 的 当 前 基 数 值 。
请 参 阅 CSpinButtonCtrl::SetBase
CSpinButtonCtrl::GetBuddy
CWnd* GetBuddy( ) const;
返 回 一 个 指 向 当 前 伙 伴 窗 口 的 指 针 。
说 明
此 成 员 函 数 用 来 获 取 一 个 指 向 当 前 伙 伴 窗 口 的 指 针 。
请 参 阅 CSpinButtonCtrl::SetBuddy
CSpinButtonCtrl::GetPos
int GetPos( ) const;
返 回 值
返 回 值 的 低 位 字 中 是 当 前 位 置 。 如 果 发 生 了 一 个 错 误 , 则 高 位 字 是 非 零 值 。
此 成 员 函 数 用 来 获 取 一 个 旋 转 按 钮 控 件 的 当 前 位 置 。 控 件 根 据 伙 伴 窗 口 的 标 题来 更 新 它 的 当 前 位 置 , 获 得 要 返 回 的 值 。 如 果 没 有 伙 伴 窗 口 或 者 如 果 标 题 指 示的 是 一 个 无 效 或 超 出 范 围 的 值 , 则 返 回 一 个 错 误 信 息 。
请 参 阅 CSpinButtonCtrl::SetPos
C SpinButtonCtrl::GetRange
DWORD GetRange( ) const;
void GetRange( int & lowe r, int& upper ) const; void GetRange32( int & lowe r, int& upper ) const;
返 回 值
第 一 个 版 本 返 回 一 个 32 位 的 值 , 包 含 了 上 限 和 下 限 值 。 低 位 字 是 控 件 的 上 限 ,
高 位 字 是 控 件 的 下 限 。
参 数
lower
对 一 个 用 来 接 收 控 件 的 下 限 的 整 数 的 引 用 。
upper
对 一 个 用 来 接 收 控 件 的 上 限 的 整 数 的 引 用 。
说 明
此 成 员 函 数 用 来 获 取 一 个 旋 转 按 钮 控 件 的 上 限 和 下 限 ( 范 围 ) 。
成 员 函 数 GetRange32 获 取 此 旋 转 按 钮 控 件 的 用 一 个 32 位 的 整 数 表 示 的 范 围 。
请 参 阅 CSpinButtonCtrl::SetRange
CSpinButtonCtrl::SetAccel
BOOL SetAccel( int nAcce l, UDACCEL* pAccel );
返 回 值
如 果 成 功 则 返 回 非 零 值 ; 否 则 返 回 0 。
参 数
nAccel
由 pAccel 指 定 的 UDACCEL 结 构 的 数 目 。
pAccel
指 向 一 个 UDACCEL 结 构 数 组 的 指 针 , 该 数 组 包 含 了 加 速 信 息 。 元 素 根据 nSec 成 员 按 升 序 保 存 。
说 明
此 成 员 函 数 用 来 设 置 一 个 旋 转 按 钮 控 件 的 加 速 。
请 参 阅 CSpinButtonCtrl::GetAccel
CSpinButtonCtrl::SetBase
int SetBase( int nBase );
返 回 值
如 果 成 功 则 返 回 先 前 的 基 数 值 , 如 果 给 出 的 是 一 个 无 效 的 基 数 则 返 回 一 个 非 零值 。
参 数
nBase
控 件 的 新 的 基 数 。
说 明
此 成 员 函 数 用 来 设 置 一 个 旋 转 按 钮 控 件 的 基 数 。 这 个 基 数 值 决 定 了 伙 伴 窗 口 显示 的 数 字 是 十 进 制 的 还 是 十 六 进 制 的 。 十 六 进 制 的 数 总 是 无 符 号 的 ; 十 进 制 的数 是 有 符 号 的 。
请 参 阅 CSpinButtonCtrl::GetBase
CSpinButtonCtrl::SetBuddy
CWnd* SetBuddy( CWnd* pWndBuddy );
返 回 值
一 个 指 向 先 前 的 伙 伴 窗 口 的 指 针 。
pWndBuddy
指 向 新 的 伙 伴 窗 口 的 指 针 。
说 明
此 成 员 函 数 用 来 为 一 个 旋 转 控 件 设 置 伙 伴 窗 口 。
请 参 阅 CSpinButtonCtrl::GetBuddy
CSpinButtonCtrl::SetPos
int SetPos( int nPos );
返 回 值
返 回 原 来 的 位 置 。
nPos
控 件 的 新 位 置 。 这 个 值 必 须 在 控 件 的 上 限 和 下 限 指 定 的 范 围 之 内 。
说 明
此 成 员 函 数 用 来 设 置 一 个 旋 转 按 钮 控 件 的 当 前 位 置 。
请 参 阅 CSpinButtonCtrl::SetRange, CSpinButtonCtrl::GetPos
CSpinButtonCtrl::SetRange
void SetRange( int nLower , int nUpper ); void SetRange32( int nLower , int nUpper );
参 数
nLower and nUpper
控 件 的 上 限 和 下 限 。 任 何 一 个 界 限 值 都 不 能 大 于 UD_MAXVAL 或 小 于
UD_ MINVA L 。另 外 ,两 个 界 限 值 之 间 的 差 值 必 须 不 超 过 UD_MAXVAL 。
说 明
此 成 员 函 数 用 来 设 置 一 个 旋 转 按 钮 控 件 的 上 限 和 下 限 ( 范 围 ) 。成 员 函 数 SetRange32 为 此 旋 转 按 钮 控 件 设 置 32 位 的 范 围 。
注 意 旋 转 按 钮 控 件 的 缺 省 范 围 将 最 大 值 设 置 为 零 ( 0 ) , 而 最 小 值 设 置为 100 。 由 于 最 大 值 小 于 最 小 值 , 所 以 点 击 向 上 箭 头 将 减 小 位 置 值 , 而 点击 向 下 箭 头 则 增 加 位 置 值 。 使 用 CSpinButtonCtrl::SetRange 来 调 整 这些 值 。
请 参 阅 CSpinButtonCtrl::GetRange, CSpinButtonCtrl::GetPos, Using CSpinButtonCtrl