C S tatusBarCtrl
- 个 “ 状 态 条 控 件 ” 是 一 个 水 平 的 窗 口 , 通 常 显 示 在 一
个 父 窗 口 的 底 部 , 在 其
中 应 用 程 序 可 以 显 示 不 同 类 型 的 状 态 信 息 。 可 以 将 此 状 态 条 控 件 分 割 为 多 个 部分 , 用 来 显 示 多 种 类 型 的 信 息 。
CStatusBarCtrl 类 提 供 了 W indows 通 用 状 态 条 控 件 的 性 能 。 这 个 控 件 ( 也 就 是CStatusBarCtrl 类 ) 只 对 运 行 在 Windows 95 和 W indows NT3.51 或 更 新 版 本 下的 程 序 来 说 是 可 用 的 。
有 关 使 用 CStatusBarCtrl 的 更 多 信 息 , 参 见 “ V isual C++ 程 序 员 指 南 ” 中 的 “控件 主 题 ” 和 “ 使 用 CStatusBarCtrl ” 。
#include <afxcmn.h>
请 参 阅 CtoolBarCtrl
C StatusBarCtrl 类 成 员
Construction
CstatusBarCtrl 构 造 一 个 CStatusBarCtrl 对 象
Create 创 建 一 个 状 态 条 控 件 并 将 它 与 一 个 CstatusBarCtrl
对 象 连 接
Attributes
SetText 设 置 一 个 状 态 条 控 件 的 给 定 部 分 中 的 文 本
GetText 从 一 个 状 态 条 控 件 的 给 定 部 分 中 获 取 文 本
GetTextLength 从 一 个 状 态 条 控 件 的 给 定 部 分 获 取 文 本 的 用 字 符
数 目 表 示 的 长 度
SetParts 设 置 一 个 状 态 条 控 件 中 的 部 分 数 目 , 以 及 每 一 个部 分 的 右 边 缘 的 坐 标
GetParts 获 取 一 个 状 态 条 控 件 中 的 部 分 数 目
GetBorders 获 取 一 个 状 态 条 控 件 的 水 平 或 垂 直 边 界 的 对 齐 宽
度
SetMinHeight 设 置 一 个 状 态 条 控 件 的 绘 制 区 域 的 最 小 高 度
SetSimple 指 定 一 个 状 态 条 控 件 是 显 示 简 单 的 文 本 , 还 是 显
示 由 前 一 次 调 用 SetParts 设 置 的 所 有 控 件 部 分
续 表
GetRect 获 取 一 个 状 态 条 控 件 中 的 一 个 部 分 的 边 界 矩 形
IsSimple 检 查 一 个 状 态 条 窗 口 控 件 以 确 定 它 是 否 处 于 简 单模 式
GetTipText 获 取 状 态 条 中 的 一 个 窗 格 的 工 具 提 示 文 本
SetTipText 设 置 状 态 条 中 的 一 个 窗 格 的 工 具 提 示 文 本
SetBkColor 设 置 一 个 状 态 条 控 件 中 的 背 景 颜 色
SetIcon 设 置 状 态 条 控 件 中 的 窗 格 的 图 标
Overridable s D rawItem 当 一 个 属 主 绘 制 的 状 态 条 控 件 的 外 观 改 变 时 调 用
此 函 数
成 员 函 数
CStatusBarCtrl::Create
BOOL Create( DWORD dwStyle , const RECT& rect , CWnd* pParentWnd , UINT
nID );
返 回 值
如 果 成 功 则 返 回 非 零 值 ; 否 则 返 回 零 。
参 数
dwStyle
指 定 状 态 条 控 件 的 风 格 。 状 态 条 控 件 风 格 的 任 意 组 合 都 适 用 于 这 个 控 件 。这 个 参 数 必 须 包 括 WS_CHILD 风 格 。 它 也 必 须 包 括 WS_VISIBLE 风 格 。参 见 说 明 部 分 可 以 获 得 更 多 信 息 。
rect
指 定 状 态 条 控 件 的 大 小 和 位 置 。 它 可 以 是 一 个 CRect 对 象 或 一 个 RECT 结
构 。
pParentWnd
指 定 状 态 条 控 件 的 父 窗 口 , 通 常 是 一 个 CDialog。 它 不 能 是 NULL 。
nID
指 定 状 态 条 控 件 的 ID 。
说 明
构 造 一 个 CStatusBarCtrl 对 象 可 以 分 两 步 。 首 先 调 用 构 造 函 数 , 然 后 调 用 Create
来 创 建 状 态 条 控 件 并 将 它 与 CStatusBarCtrl 对 象 连 接 。
dwStyle 参 数 可 以 是 下 列 值 的 任 意 组 合 :
-
CCS_BOTTOM 使 控 件 将 它 自 己 定 位 在 父 窗 口 的 客 户 区 的 底
端 , 并 将 宽度 设 置 为 与 父 窗 口 的 宽 度 一 样 。 状 态 条 控 件 将 此 作 为 它 的 缺 省 风 格 。
-
CCS_NODIVIDER 禁 止 在 控 件 的 顶 部 绘 制 两 个 像 素 的 高 亮 区
。
-
CCS_NOHILITE 禁 止 在 控 件 的 顶 部 绘 制 一 个 像 素 的 高 亮 区
。
-
CCS_NOMOVEY 使 控 件 响 应 WM_SIZE 消 息 , 调 整 自 己 的 大 小
并 水 平 移
动 自 己 , 但 不 是 垂 直 移 动 。 如 果 使 用 了 CCS_NORESIZE 风 格 , 则 此 风 格不 能 使 用 。
-
CCS_NOPARENTALIGE 禁 止 控 件 自 动 移 动 到 父 窗 口 的 顶 部 或
底 部 。 不管 控 件 的 父 窗 口 的 尺 寸 怎 么 改 变 , 控 件 都 保 持 它 在 父 窗 口 中 的 位 置 。 如 果也 使 用 了 CCS_TOP 和 CCS_BOTTOM 风 格 , 则 高 度 被 调 整 为 缺 省 值 , 但位 置 和 宽 度 仍 然 保 持 不 变 。
-
CCS_NORESIZE 当 控 件 设 置 它 自 己 的 初 始 尺 寸 和 新 尺 寸 时
, 禁 止 控 件 使用 缺 省 的 宽 度 和 高 度 。 而 是 用 在 创 建 或 调 整 大 小 的 请 求 中 指 定 的 宽 度 和 高度 。
-
CCS_TOP 使 控 件 将 自 己 定 位 在 其 父 窗 口 的 顶 部 , 并 将 自
己 的 宽 度 设 置 为与 父 窗 口 的 宽 度 一 样 。
- 个 状 态 窗 口 的 缺 省 位 置 是 沿 着 父 窗 口 的 底 部 , 但 是 你
也 可 以 指 定 CCS_TOP
风 格 来 使 它 显 示 在 父 窗 口 的 客 户 区 的 顶 部 。 还 可 以 指 定 SBARS_SIZEGRIP 风格 来 使 它 包 括 一 个 位 于 状 态 窗 口 右 端 的 调 整 大 小 的 把 手 。 并 不 建 议 组 合CCS_TOP 和 SBARS_SIZEGRIP 风 格 , 因 为 这 样 获 得 的 调 整 大 小 把 手 是 没 有 用的 , 尽 管 系 统 将 它 绘 制 在 了 状 态 窗 口 中 。
请 参 阅 CStatusBarCtrl::CStatusBarCtrl
CStatusBarCtrl::CStatusBarCtrl
CStatusBarCtrl( );
说 明
此 成 员 函 数 用 来 构 造 一 个 CStatusBarCtrl 控 件 。
请 参 阅 CStatusBarCtrl::Create
CStatusBarCtrl::DrawItem
virtual void DrawItem( LPDRA W ITEMSTRUCT lpDrawItemStruct );
参 数
lpDrawItemStruct
一 个 指 向 DRAWITEMSTRUCT 结 构 的 长 指 针 。 该 结 构 包 含 了 有 关 所 要求 的 绘 制 的 类 型 的 信 息 。
说 明
当 一 个 属 主 绘 制 的 状 态 条 控 件 的 外 观 发 生 改 变 时 框 架 调 用 此 成 员 函 数 。
D R A W ITEMS- TRUCT 结 构 的 itemAction 成 员 定 义 了 要 执 行 的 绘 制 动 作 。
缺 省 的 , 这 个 成 员 函 数 不 做 任 何 事 情 。 重 载 这 个 成 员 函 数 来 实 现 对 一 个 属 主 绘制 的 CStatusBarCtrl 对 象 的 绘 制 。
在 此 成 员 函 数 终 止 之 前 , 应 用 程 序 应 该 恢 复 在 lpDrawItemStruct 中 提 供 的 显 示环 境 所 选 择 的 所 有 图 形 设 备 接 口 ( GD I) 。
请 参 阅 CWnd::OnDrawItem
CStatusBarCtrl::GetBorders
BOOL GetBorders( int* pBorders ) const;
BOOL GetBorders( int& nHorz , int& nVer t, int& nSpacing ) const;
返 回 值
如 果 成 功 则 返 回 非 零 值 ; 否 则 返 回 零 。
参 数
pBorders
一 个 有 三 个 元 素 的 整 数 数 组 的 地 址 。 第 一 个 元 素 用 来 接 收 水 平 边 界 的 宽
度 , 第 二 个 元 素 用 来 接 收 垂 直 边 界 的 宽 度 , 第 三 个 元 素 用 来 接 收 矩 形 之间 的 边 界 的 宽 度 。
nHorz
是 对 一 个 用 来 接 收 水 平 边 界 宽 度 的 整 数 的 引 用 。
nVert
是 对 一 个 用 来 接 收 垂 直 边 界 宽 度 的 整 数 的 引 用 。
nSpacing
是 对 一 个 用 来 接 收 矩 形 之 间 的 边 界 宽 度 的 整 数 的 引 用 。
说 明
此 成 员 函 数 用 来 获 取 状 态 条 控 件 的 水 平 和 垂 直 边 界 , 以 及 矩 形 之 间 的 空 间 的 当前 宽 度 。 这 些 边 界 决 定 了 控 件 的 外 部 边 缘 和 控 件 内 部 包 含 文 本 的 矩 形 之 间 的 间隔 。
请 参 阅 CStatusBarCtrl::GetParts, CStatusBarCtrl::SetParts
CStatusBarCtrl::GetParts
int GetParts( int nParts , int* pParts ) const;
返 回 值
如 果 成 功 则 返 回 控 件 中 的 部 分 数 ; 否 则 返 回 零 。
参 数
nParts
要 获 取 其 坐 标 的 部 分 数 。 如 果 这 个 参 数 大 于 控 件 中 的 部 分 数 , 则 只 返 回现 有 部 分 的 坐 标 。
pParts
一 个 整 数 数 组 的 地 址 , 该 数 组 的 元 素 个 数 与 nParts 指 定 的 部 分 数 一 样 。
数 组 中 的 每 一 个 元 素 都 用 来 接 收 相 应 部 分 的 右 边 缘 的 客 户 区 坐 标 。 如 果一 个 元 素 被 设 置 为 -1 , 则 表 示 该 部 分 的 右 边 缘 扩 展 到 了 状 态 条 的 右 边 缘 。
说 明
此 成 员 函 数 用 来 获 取 一 个 状 态 条 控 件 中 的 部 分 数 。 这 个 成 员 函 数 也 用 来 获 取 给定 数 目 的 部 分 的 右 边 缘 的 坐 标 。
请 参 阅 CStatusBarCtrl::GetBorders, CStatusBarCtrl::SetParts
CStatusBarCtrl::GetRect
BOOL GetRect( int nPane , LPRECT lpRect ) const;
返 回 值
如 果 成 功 则 返 回 非 零 值 ; 否 则 返 回 零 。
nPane
要 获 取 其 边 界 矩 形 的 部 分 的 从 零 开 始 的 索 引 。
lpRect
一个 RECT 结 构 的 地 址 , 该 结 构 接 收 边 界 矩 形 。
说 明
此 成 员 函 数 用 来 获 取 状 态 条 控 件 中 的 一 个 部 分 的 边 界 矩 形 。
请 参 阅 CStatusBarCtrl::GetParts
CStatusBarCtrl::GetText
int GetText( LPCTSTR lpszTex t, int nPane , int* pType ) const;
文 本 的 用 字 符 数 表 示 的 长 度 。
参 数
lpszText
用 来 接 收 文 本 的 缓 冲 的 地 址 。 这 个 参 数 是 一 个 用 空 字 符 结 尾 的 字 符 串 。
nPane
要 获 取 其 文 本 的 部 分 的 从 零 开 始 的 索 引 。
pType
指 向 一 个 用 来 接 收 信 息 类 型 的 整 数 的 指 针 。 这 个 类 型 可 以 是 下 列 值 中 的一 个 :
-
0 绘 制 的 文 本 的 一 个 边 界 看 起 来 低 于 状 态 条 平 面 。
-
SBT_NOBORDERS 绘 制 的 文 本 没 有 边 界 。
-
SBT_POPOUT 绘 制 的 文 本 的 边 界 显 示 比 状 态 条 的 平 面 高 。
-
SBT_OWNERDRAW 如 果 文 本 具 有 SBT_OWNERDRAW 绘 制 风 格 , 则
pType 接 收 这 个 消 息 并 返 回 与 文 本 关 联 的 32 位 值 ,而 不 是 长 度 和 操 作 类 型 。
说 明
此 成 员 函 数 用 来 从 一 个 状 态 条 控 件 的 给 定 部 分 获 取 文 本 。
请 参 阅 CStatusBarCtrl::SetText, CStatusBarCtrl::GetTextLength
CStatusBarCtrl::GetTextLength
int GetTextLength( int nPane , int* pType ) const;
返 回 值
返 回 文 本 的 用 字 符 数 表 示 的 长 度 。
参 数
nPane
要 获 取 其 文 本 的 部 分 的 从 零 开 始 的 索 引 。
pType
指 向 一 个 用 来 接 收 信 息 类 型 的 整 数 的 指 针 。 这 个 类 型 是 下 列 值 中 的 一 个 :
-
0 绘 制 的 文 本 的 一 个 边 界 看 起 来 低 于 状 态 条 平 面 。
-
SBT_NOBORDERS 绘 制 的 文 本 没 有 边 界 。
-
SBT_OWNERDRAW 文 本 是 父 窗 口 绘 制 的 。
-
SBT_POPOUT 绘 制 的 文 本 的 边 界 显 示 比 状 态 条 的 平 面 高 。
说 明
此 成 员 函 数 用 来 从 一 个 状 态 条 控 件 中 的 给 定 部 分 获 取 文 本 的 用 字 符 数 表 示 的 长
度 。
请 参 阅 CStatusBarCtrl::GetText, CStatusBarCtrl::SetText
CStatusBarCtrl::GetTipText
CString GetTipText( int nPane ) const;
返 回 值
返 回 一 个 CString 对 象 , 该 对 象 包 含 了 要 被 使 用 在 工 具 提 示 中 的 文 本 。
参 数
nPane
要 获 取 工 具 提 示 文 本 的 状 态 条 窗 格 的 从 零 开 始 的 索 引 。
说 明
此 成 员 函 数 用 来 实 现 W in32 消 息 SB_GETTIPTEXT 的 行 为 , 就 像 在 “ Platform SDK ” 中 描 述 的 一 样 。
请 参 阅 CStatusBarCtrl::SetTipText
CStatusBarCtrl::IsSimple BOOL IsSimple( ) const; 返 回 值
如 果 状 态 窗 口 控 件 是 在 简 单 模 式 下 则 返 回 非 零 值 ; 否 则 返 回 零 。
说 明
此 成 员 函 数 用 来 实 现 Win32 消 息 SB_ISSIMPLE 行 为 , 就 像 在 “ Platform SDK ”
中 描 述 的 一 样 。
请 参 阅 CStatusBarCtrl::SetSimple
CStatusBarCtrl::SetBkColor
COLORREF SetBkColor( COLORREF cr );
返 回 值
返 回 一 个 代 表 先 前 的 缺 省 背 景 颜 色 的 COLORREF 值 。
参 数
cr
是 指 定 新 的 背 景 颜 色 的 COLORREF 值 。 如 果 指 定 的 是 CLR_DEFAULT
值 , 则 会 导 致 状 态 条 使 用 它 的 缺 省 背 景 颜 色 。
说 明
此 成 员 函 数 用 来 实 现 Win32 消 息 SB_SETBKCOLOR 的 行 为 , 就 像 在“ Platform SDK ” 中 描 述 的 一 样 。
CStatusBarCtrl::SetIcon
BOOL SetIcon( int nPane , HICON hIcon );
返 回 值
如 果 成 功 则 返 回 非 零 值 ; 否 则 返 回 零 。
参 数
nPane
将 用 来 接 收 图 标 的 窗 格 的 从 零 开 始 的 索 引 。 如 果 此 参 数 是 -1 , 则 状 态 条
hIcon
是 要 被 设 置 的 图 标 的 句 柄 。 如 果 这 个 值 是 NULL , 则 图 标 被 从 此 部 分 中 移
走 。
说 明
此 成 员 函 数 用 来 实 现 Win32 消 息 SB_SETICON 的 行 为 ,就 像 在“ Platform SDK ” 中 描 述 的 一 样 。
CStatusBarCtrl::SetMinHeight void SetMinHeight( int nMin ); 参 数
nMin
说 明
此 成 员 函 数 用 来 设 置 一 个 状 态 条 控 件 的 绘 画 区 的 最 小 高 度 。 这 个 最 小 高 度 是
nMin 和 两 倍 的 状 态 条 控 件 的 以 像 素 表 示 的 垂 直 边 界 的 宽 度 的 和 。
请 参 阅 CStatusBarCtrl::GetRect, CStatusBarCtrl::GetBorders
CStatusBarCtrl::SetParts
BOOL SetParts( int nParts , int* pWidths );
返 回 值
如 果 成 功 则 返 回 非 零 值 ; 否 则 返 回 零 。
参 数
nParts
要 设 置 的 部 分 的 数 目 。 部 分 数 不 能 大 于 255 。
pWidths
一 个 整 数 数 组 的 地 址 , 该 数 组 的 元 素 个 数 与 nParts 指 定 的 数 目 一 样 。 数组 中 的 每 一 个 元 素 以 客 户 区 坐 标 指 定 了 相 应 部 分 的 右 边 缘 位 置 。 如 果 某一 个 元 素 是 -1 , 则 相 应 部 分 的 右 边 缘 位 置 扩 展 到 了 该 控 件 的 右 边 缘 。
说 明
此 成 员 函 数 用 来 设 置 一 个 状 态 条 控 件 中 的 部 分 数 , 以 及 每 一 部 分 的 右 边 缘 的 坐标 。
请 参 阅 CStatusBarCtrl::GetBorders, CStatusBarCtrl::GetParts
CStatusBarCtrl::SetSimple
BOOL SetSimple( BOOL bSimple = TRUE );
返 回 值
如 果 发 生 了 错 误 则 返 回 零 。
参 数
bSimple
显 示 类 型 标 志 。 如 果 这 个 参 数 是 TRUE , 则 控 件 显 示 简 单 的 文 本 ; 如 果是 FALSE , 则 它 显 示 多 个 部 分 。
说 明
此 成 员 函 数 用 来 指 定 一 个 状 态 条 控 件 是 显 示 简 单 文 本 , 还 是 显 示 前 面 调 用
SetParts 设 置 的 所 有 控 件 部 分 。
如 果 状 态 条 控 件 是 从 非 简 单 模 式 改 变 到 简 单 模 式 , 或 者 是 从 简 单 到 非 简 单 , 控件 都 会 被 重 画 。
请 参 阅 CStatusBarCtrl::SetParts
CStatusBarCtrl::SetText
BOOL SetText( LPCTSTR lpszText , int nPane , int nType );
返 回 值
如 果 成 功 则 返 回 非 零 值 ; 否 则 返 回 零 。
参 数
lpszText
一 个 以 空 字 符 结 尾 的 字 符 串 的 地 址 , 该 字 符 串 指 定 了 要 设 置 的 文 本 。 如果 nType 是 SBT_OWNERDRAW , 则 lpszText 表 示 32 位 的 数 据 。
nPane nType
绘 制 操 作 的 类 型 。 这 个 类 型 可 以 是 下 列 值 中 的 一 个 :
-
0 绘 制 的 文 本 的 一 个 边 界 看 起 来 低 于 状 态 条 平 面 。
-
SBT_NOBORDERS 绘 制 的 文 本 没 有 边 界 。
-
SBT_OWNERDRAW 文 本 是 父 窗 口 绘 制 的 。
-
SBT_POPOUT 绘 制 的 文 本 的 边 界 显 示 比 状 态 条 的 平 面 高 。
说 明
此 成 员 函 数 用 来 在 一 个 状 态 条 控 件 的 给 定 部 分 中 设 置 文 本 。 当 控 件 下 一 次 接 收到 WM_PAINT 消 息 时 , 这 是 表 示 控 件 的 该 部 分 被 改 变 的 消 息 , 导 致 该 部 分 显
请 参 阅 CStatusBarCtrl::GetText, CStatusBarCtrl::GetTextLength
CStatusBarCtrl::SetTipText
void SetTipText( int nPane , LPCTSTR pszTipText );
参 数
nPane
要 接 收 工 具 提 示 文 本 的 状 态 条 窗 格 的 从 零 开 始 的 索 引 。
pszTipText
一 个 指 向 包 含 工 具 提 示 文 本 的 字 符 串 的 指 针 。
说 明
此 成 员 函 数 用 来 实 现 W in32 消 息 SB_SETTIPTEXT 的 行 为 , 就 像 在 “ Platform
请 参 阅 CStatusBarCtrl::GetTipText