CScrollBar
CScrollBar 类 支 持 一 个 W indows 滚 动 条 控 件 的 功 能 。
创 建 一 个 滚 动 条 控 件 分 为 两 步 。 首 先 , 调 用 构 造 函 数 CScrollBar 来 构 造 一 个CScrollBar 对 象 , 然 后 调 用 C reate 成 员 函 数 来 创 建 W indows 滚 动 条 控 件 并 将 它与 CScrollBar 对 象 相 联 系 。
如 果 你 是 在 一 个 对 话 框( 通 过 一 个 对 话 框 资 源 ) 中 创 建 一 个 CScrollBar 对 象 的 ,
则 当 用 户 关 闭 这 个 对 话 框 时 , CScrollBar 自 动 销 毁 。
如 果 你 是 在 一 个 窗 口 中 创 建 一 个 CScrollBar 对 象 , 则 你 必 须 负 责 销 毁 该 对 象 。
如 果 你 是 堆 栈 中 创 建 CScrollBar 对 象 , 则 该 对 象 将 会 自 动 销 毁 。 如 果 你 是 通 过使 用 New 函 数 在 数 据 堆 中 创 建 CScrollBar 对 象 , 则 当 用 户 终 止 使 用 该 W indows 滚 动 条 时 , 你 必 须 调 用 delete 来 销 毁 该 对 象 。
如 果 你 在 此 CScrollBar 对 象 中 分 配 了 任 何 内 存 , 则 应 重 载 CScrollBar 析 构 函 数来 释 放 这 些 内 存 。
#include <afxwin.h>
请 参 阅 C Wnd, CButton, CComboBox, CEdit, CListBox, CStatic, CDialog
CScrollBar 类 成 员
Construction
CscrollBar 构 造 一 个 CScrollBar 对 象
Initialization
Create 创 建 W indows 滚 动 条 , 并 将 它 连 接 到 CScrollBar
对 象 上
Operation s GetScrollPos 获 取 一 个 滚 动 框 的 当 前 位 置
SetScrollPos 设 置 一 个 滚 动 框 的 当 前 位 置
GetScrollRange 获 取 给 定 滚 动 条 的 当 前 最 大 和 最 小 滚 动 条 位 置SetScrollRange 设 置 给 定 滚 动 条 的 最 小 和 最 大 位 置ShowScrollBar 显 示 或 隐 藏 一 个 滚 动 条
EnableScrollBar 使 一 个 滚 动 条 的 一 个 或 两 个 箭 头 有 效 或 无 效
SetScrollInfo 设 置 有 关 滚 动 条 的 信 息
GetScrollInfo 获 取 有 关 滚 动 条 的 信 息
GetScrollLimit 获 取 滚 动 条 的 极 限
成 员 函 数
CScrollBar::Create
BOOL Create( DWORD dwStyle , const RECT& rect , CWnd* pParentWnd , UINT
nID );
返 回 值
如 果 成 功 则 返 回 非 零 值 ; 否 则 返 回 0 。
参 数
dwStyle
指 定 滚 动 条 的 风 格 。 任 何 滚 动 条 风 格 的 组 合 都 适 用 于 滚 动 条 。
rect
指 定 滚 动 条 的 大 小 和 位 置 。 可 以 是 一 个 RECT 结 构 或 是 一 个 CRect 对 象 。
pParentWnd
指 定 滚 动 条 的 父 窗 口 , 通 常 是 一 个 CDialog 对 象 。 它 不 能 是 NULL 。
NID
该 滚 动 条 的 控 件 ID 。
说 明
可 以 分 两 步 构 造 一 个 CScrollBar 对 象 。首 先 调 用 构 造 函 数 来 构 造 一 个 CScrollBar 对 象 ; 然 后 调 用 Create 来 创 建 并 初 始 化 关 联 的 W indows 滚 动 条 , 并 将 它 连 接到 该 CScrollBar 对 象 上 。
可 以 将 下 列 窗 口 风 格 使 用 到 一 个 滚 动 条 :
-
WS_CHILD 总 要 使 用 。
-
WS_VISIBLE 常 用 。
-
WS_DISABLED 少 用 。
-
WS_GROUP 将 控 件 分 组 。
请 参 阅 CScrollBar::CScrollBar
CScrollBar::CScrollBar
CScrollBar( );
说 明
此 成 员 函 数 用 来 构 造 一 个 CScrollBar 对 象 。 在 构 造 对 象 之 后 , 调 用 Create 成员函 数 来 创 建 并 初 始 化 Windows 滚 动 条 。
请 参 阅 CScrollBar::Create
CScrollBar::EnableScrollBar
BOOL EnableScrollBar( UINT nArrowFlags = ESB_ENABLE_BOTH );
返 回 值
如 果 按 指 定 的 要 求 使 箭 头 有 效 或 无 效 , 则 返 回 非 零 值 ; 否 则 返 回 0 , 这 表 明 箭头 已 经 处 于 需 要 的 状 态 , 或 者 是 发 生 了 一 个 错 误 。
参 数
nArrowFlags
指 定 是 要 使 给 定 箭 头 有 效 还 是 无 效 , 及 是 使 哪 一 个 箭 头 有 效 或 无 效 。 这个 参 数 可 以 是 下 列 值 之 一 :
-
ESB_ENABLE_BOTH 使 滚 动 条 的 两 个 箭 头 都 有 效 。
-
ESB_DISABLE_LTUP 使 水 平 滚 动 条 的 左 箭 头 或 垂 直 滚 动 条
的 上 箭 头无 效 。
-
ESB_DISABLE_RTDN 使 水 平 滚 动 条 的 右 箭 头 或 垂 直 滚 动 条
的 下 箭
头 无 效 。
- ESB_DISABLE_BOTH 使 滚 动 条 的 两 个 箭 头 都 无 效 。
说 明
此 成 员 函 数 用 来 使 滚 动 条 的 一 个 或 两 个 箭 头 有 效 或 无 效 。
请 参 阅 CWnd::EnableScrollBar, ::EnableScrollBar
CScrollBar::GetScrollInfo
BOOL GetScrollInfo( LPSCROLLINFO lpScrollInfo , UINT nMask );
返 回 值
如 果 消 息 获 取 了 任 何 值 , 则 返 回 TRUE ; 否 则 返 回 FALSE 。
参 数
lpScrollInfo
指 向 一 个 SCROLLINFO 结 构 的 指 针 。 参 见 “ W in32 程 序 员 参 考 ” 可 以 获得 更 多 有 关 这 个 结 构 的 信 息 。
nMask
指 定 要 获 取 的 滚 动 条 参 数 。通 常 使 用 的 是 :SIF_ALL ,表 示 是 SIF_PAGE , SIF_POS , SIF_TRACKPOS 和 SIF_RANGE 的 组 合 。 参 见 SCROLLINFO
可 以 获 得 有 关 n M ask 值 的 更 多 信 息 。
说 明
此 成 员 函 数 用 来 获 取 由 SCROLLINFO 结 构 保 存 的 关 于 一 个 滚 动 条 的 信 息 。
GetScrollInfo 允 许 应 用 程 序 使 用 32 位 的 滚 动 位 置 信 息 。
SCROLLINFO 结 构 包 含 了 有 关 一 个 滚 动 条 的 信 息 , 包 括 滚 动 位 置 的 最 小 和 最大 值 , 页 面 的 大 小 和 滚 动 框 ( 拇 指 ) 的 位 置 。 参 见 “ W in32 SDK 程 序 员 参 考 ” 中 的 SCROLLINFO 结 构 主 题 , 可 以 获 得 有 关 改 变 结 构 的 缺 省 值 的 更 多 信 息 。
MFC Windows 消 息 句 柄 表 示 了 滚 动 条 的 位 置 , CWnd::OnHScroll 和CWnd::OnVScroll 只 提 供 16 位 的 位 置 数 据 。 GetScrollInfo 和 SetScrollInfo 提供32 位 的 滚 动 条 位 置 数 据 。因 此 ,一 个 应 用 程 序 在 处 理 GetScrollInfo 或 SetScrollInfo 时 , 可 以 调 用 GetScrollInfo 来 获 取 32 位 的 滚 动 条 位 置 数 据 。
请 参 阅 CScrollBar::SetScrollInfo, CWnd::SetScrollInfo, CWnd::SetScrollPos, CWnd::OnVScroll, CWnd::OnHScroll, SCROLLINFO
CScrollBar::GetScrollLimit
int GetScrollLimit( );
返 回 值
如 果 成 功 则 返 回 值 指 定 滚 动 条 最 大 位 置 ; 否 则 返 回 值 为 0 。
说 明
此 成 员 函 数 用 来 获 取 滚 动 条 的 最 大 滚 动 位 置 。
请 参 阅 CWnd::GetScrollLimit
CScrollBar::GetScrollPos
int GetScrollPos( ) const;
返 回 值
如 果 成 功 则 返 回 指 定 滚 动 框 当 前 位 置 的 值 ; 否 则 返 回 0 。
说 明
此 成 员 函 数 用 来 获 取 一 个 滚 动 框 的 当 前 位 置 。 这 个 当 前 位 置 是 一 个 相 对 值 , 它依 赖 于 当 前 的 滚 动 范 围 。 例 如 , 如 果 滚 动 范 围 是 100 到 200 , 而 滚 动 框 是 在 滚动 条 的 中 间 , 则 这 个 当 前 位 置 是 150 。
请 参 阅 CScrollBar::SetScrollPos, CScrollBar::GetScrollRange, CScrollBar::SetScrollRange, ::GetScrollPos
CScrollBar::GetScrollRange
void GetScrollRange( LPINT lpMinPos , LPINT lpMaxPos ) const;
参 数
lpMinPos
指 向 一 个 用 来 接 收 最 小 位 置 的 整 型 变 量 。
lpMaxPos
指 向 一 个 用 来 接 收 最 大 位 置 的 整 型 变 量 。
说 明
此 成 员 函 数 将 滚 动 条 的 当 前 滚 动 条 位 置 的 最 小 和 最 大 值 拷 贝 为 lpMinPos 和
lpMaxPos 指 定 的 值 。
- 个 滚 动 条 控 件 的 缺 省 范 围 是 空 ( 两 个 值 都 为 零 ) 。
请 参 阅 ::GetScrollRange, CScrollBar::SetScrollRange, CScrollBar::GetScrollPos, CScrollBar::SetScrollPos
CScrollBar::SetScrollInfo
BOOL SetScrollInfo( LPSCROLLINFO lpScrollInfo , BOOL bRedraw = TRUE );
返 回 值
如 果 成 功 则 返 回 TRUE ; 否 则 返 回 FALSE 。
参 数
lpScrollInfo
指 向 一 个 SCROLLINFO 结 构 的 指 针 。
bRedraw
指 示 这 个 滚 动 条 是 否 应 重 画 以 反 映 新 的 信 息 。 如 果 bRedraw 是 TRUE , 则 滚 动 条 被 重 画 。 如 果 它 是 FALSE , 则 不 重 画 滚 动 条 。 缺 省 的 , 滚 动 条将 被 重 画 。
说 明
此 成 员 函 数 用 来 设 置 SCROLLINFO 结 构 保 持 的 有 关 一 个 滚 动 条 的 信 息 。 你 必
须 提 供 SCROLLINFO 结 构 参 数 需 要 的 值 , 包 括 标 志 值 。
SCROLLINFO 结 构 包 含 了 有 关 一 个 滚 动 条 的 信 息 , 包 括 滚 动 位 置 的 最 小 和 最大 值 , 页 面 的 大 小 和 滚 动 框 ( 拇 指 ) 的 位 置 。 参 见 “ W in32 SDK 程 序 员 参 考 ” 中 的 SCROLLINFO 结 构 主 题 , 可 以 获 得 有 关 改 变 此 结 构 的 缺 省 值 的 更 多 信 息 。
请 参 阅 CScrollBar::GetScrollInfo, CWnd::SetScrollInfo, CWnd::SetScrollPos, CWnd::OnVScroll, CWnd::OnHScroll, CWnd::GetScrollInfo, SCROLLINFO
CScrollBar::SetScrollPos
int SetScrollPos( int nPo s , BOOL bRedraw = TRUE );
返 回 值
如 果 成 功 则 返 回 滚 动 框 的 先 前 位 置 ; 否 则 返 回 0 。
参 数
nPos
指 定 滚 动 框 的 新 位 置 。 它 必 须 是 在 滚 动 范 围 之 内 。
bRedraw
指 示 滚 动 条 是 否 应 该 被 重 画 来 反 映 新 的 位 置 。 如 果 bRedraw 是 TRUE , 则 滚 动 条 被 重 画 。 如 果 它 是 FALSE , 则 不 重 画 滚 动 条 。 缺 省 的 , 滚 动 条将 被 重 画 。
说 明
此 成 员 函 数 用 来 将 一 个 滚 动 框 的 当 前 位 置 设 置 为 nPos 指 定 的 位 置 , 并 且 , 如果 指 定 了 重 画 , 则 重 画 滚 动 条 来 反 映 新 的 位 置 。
请 参 阅 CScrollBar::GetScrollPos, CScrollBar::GetScrollRange, CScrollBar::SetScrollRange, ::SetScrollPos
CScrollBar::SetScrollRange
void SetScrollRange( int nMinPo s , int nMaxPo s , BOOL bRedraw = TRUE );
参 数
nMinPos
指 定 滚 动 位 置 的 最 小 值 。
nMaxPos
指 定 滚 动 位 置 的 最 大 值 。
bRedraw
指 示 是 否 要 重 画 滚 动 条 来 反 映 改 变 。 如 果 bRedraw 是 TRUE , 则 滚 动 条被 重 画 。 如 果 它 是 FALSE , 则 不 重 画 滚 动 条 。 缺 省 的 , 滚 动 条 将 被 重 画 。
说 明
此 成 员 函 数 用 来 为 给 定 的 滚 动 条 设 置 滚 动 位 置 的 最 小 和 最 大 值 。如 果 将 nMinPos
和 nMaxPos 都 设 置 为 零 , 则 隐 藏 此 标 准 滚 动 条 。
当 处 理 一 个 滚 动 条 通 知 消 息 时 , 不 要 调 用 这 个 函 数 来 隐 藏 一 个 滚 动 条 。
如 果 在 调 用 SetScrollRange 之 后 , 立 即 调 用 SetScrollPos 成 员 函 数 , 则 在
SetScrollPos 中 将 bRedraw 设 置 为 0 , 以 禁 止 滚 动 条 被 重 画 两 次 。
由 nMinPos 和 nMaxPos 指 定 的 间 隔 值 必 须 不 大 于 32,767 。 一 个 滚 动 条 控 件 的 缺省 范 围 是 空 ( nMinPos 和 nMaxPos 都 为 0 ) 。
请 参 阅 CScrollBar::GetScrollPos, CScrollBar::SetScrollPos, CScrollBar::GetScrollRange, ::SetScrollRange
CScrollBar::ShowScrollBar
void ShowScrollBar( BOOL bShow = TRUE );
参 数
bShow
指 示 是 显 示 还 是 隐 藏 滚 动 条 。 如 果 这 个 参 数 是 TRUE , 则 显 示 滚 动 条 ; 否 则 隐 藏 滚 动 条 。
说 明
此 成 员 函 数 用 来 显 示 或 隐 藏 一 个 滚 动 条 。
当 应 用 程 序 在 处 理 一 个 滚 动 条 通 知 消 息 时 , 不 要 调 用 这 个 函 数 来 隐 藏 滚 动 条 。
请 参 阅 CScrollBar::GetScrollPos, CScrollBar::GetScrollRange, CWnd::ScrollWindow,
CScrollBar::SetScrollPos, CScrollBar::SetScrollRange