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