CProgressCtrl

“ 进 度 条 控 件 ” 是 一 个 窗 口 , 应 用 程 序 可 以 使 用 这 个 窗 口 来 表 明 一 个 冗 长 操 作

的 进 度 。 它 由 一 个 从 左 到 右 , 用 系 统 高 亮 色 逐 渐 填 充 的 矩 形 组 成 。

CProgressCtrl 类 提 供 了 W indows 通 用 进 度 条 控 件 的 机 能 。 这 个 控 件 ( 也 就 是CProgressCtrl 类 ) 只 有 对 运 行 在 W indows 95 和 W indows NT 3.51 或 更 高 版 本下 的 程 序 才 是 有 效 的 。

进 度 条 控 件 具 有 一 个 范 围 和 一 个 当 前 位 置 。 范 围 代 表 了 操 作 的 整 个 期 间 , 当 前位 置 代 表 了 应 用 程 序 为 完 成 操 作 已 经 做 完 的 部 分 。 窗 口 进 程 用 范 围 和 当 前 位 置来 确 定 用 高 亮 色 填 充 进 度 条 的 百 分 比 , 以 及 确 定 在 进 度 条 中 所 显 示 的 文 本 ( 如果 有 的 话 ) 。 由 于 范 围 和 当 前 位 置 值 是 用 有 符 号 整 数 表 示 的 , 所 以 可 能 的 当 前位 置 值 的 范 围 是 从 -217483648 到 21748364 7 。

#include <afxcmn.h>

CProgressCtrl 类 成 员

Construction

CprogressCtrl 构 造 一 个 CProgressCtrl 对 象

Create 创 建 一 个 进 度 条 控 件 并 将 它 与 一 个 CProgressCtrl 对象 连 接

Attributes

SetRange 为 进 度 条 控 件 设 置 范 围 的 最 小 值 和 最 大 值 , 并 重 画进 度 条 来 反 映 新 的 范 围

SetRange32 为 进 度 条 控 件 设 置 范 围 的 最 小 值 和 最 大 值 , 并 重 画

进 度 条 来 反 映 新 的 范 围

GetRange 获 取 进 度 条 控 件 范 围 的 下 限 和 上 限

GetPos 获 取 进 度 条 的 当 前 位 置

SetPos 设 置 进 度 条 的 当 前 位 置 并 重 画 进 度 条 来 反 映 新 的 位置

OffsetPos 用 一 个 指 定 的 增 量 来 增 加 进 度 条 控 件 的 当 前 位 置 ,

并 重 画 此 进 度 条 来 反 映 新 的 位 置

SetStep 为 一 个 进 度 条 控 件 指 定 每 一 步 的 增 量

Operations

StepIt 用 每 一 步 的 增 量 ( 参 见 SetStep ) 来 增 加 一 个 进 度 条控 件 的 当 前 位 置 , 并 重 画 此 进 度 条 来 反 映 新 的 位 置

成 员 函 数

CProgressCtrl::CProgressCtrl

CProgressCtrl();

说 明

此 成 员 函 数 用 来 构 造 一 个 CProgressCtrl 对 象 。

在 构 造 一 个 CProgressCtrl 对 象 后 , 调 用 CProgressCtrl::Create 来 创 建 进 度 条 控件 。

请 参 阅 CProgressCtrl::Create

CProgressCtrl::Create

BOOL Create( DWORD dwStyle , const RECT& rect , CWnd* pParentWnd , UINT

nID );

返 回 值

如 果 CProgressCtrl 对 象 被 成 功 创 建 则 返 回 TRUE ; 否 则 返 回 FALSE 。

参 数

dwStyle

指 定 进 度 条 控 件 的 风 格 。 除 了 Windows 风 格 的 任 何 组 合 , 附 加 下 列 进 度条 控 件 风 格 :

  • PBS_VERTICAL 垂 直 显 示 进 度 信 息 , 从 顶 到 底 。 没 有 这 个

    标 志 , 进

度 条 控 件 从 左 到 右 水 平 显 示 。

  • PBS_SMOOTH 逐 渐 显 示 , 平 滑 地 填 充 进 度 条 控 件 。 没 有 这

    个 标 志 , 控 件 将 用 块 来 填 充 。

rect

指 定 进 度 条 控 件 的 尺 寸 和 位 置 。 它 可 以 是 一 个 CRect 对 象 或 者 是 一 个RECT 结 构 。 由 于 此 控 件 必 须 是 一 个 子 窗 口 , 所 以 指 定 的 坐 标 是 相 对 于pParentWnd 的 客 户 区 的 。

pParentWind

指 定 进 度 条 控 件 的 父 窗 口 , 通 常 是 一 个 CDialog。 它 不 能 是 NULL 。

nID

指 定 进 度 条 控 件 的 ID 。

说 明

你 可 以 分 两 步 来 构 造 一 个 CProgressCtrl 对 象 。 首 先 调 用 构 造 函 数 来 创 建

CProgressCtrl 对 象 ; 然 后 调 用 Create 来 创 建 进 度 条 控 件 。

请 参 阅 CProgressCtrl:: CProgressCtrl

CProgressCtrl::GetPos

int GetPos();

返 回 值

返 回 进 度 条 控 件 的 位 置 。

说 明

此 成 员 函 数 用 来 检 取 进 度 条 的 当 前 位 置 。 进 度 条 的 这 个 位 置 不 是 它 在 屏 幕 上 的

请 参 阅 CProgressCtrl::SetPos

CProgressCtrl::GetRange

void GetRange( int & nLower , int& nUpper );

参 数

nLower

  • 个 指 向 整 数 的 引 用 , 它 用 来 接 收 进 度 条 控 件 的 下 限 。

nUpper

  • 个 指 向 整 数 的 引 用 , 它 用 来 接 收 进 度 条 控 件 的 上 限 。

说 明

此 成 员 函 数 用 来 获 取 当 前 进 度 条 控 件 的 上 限 和 下 限 , 或 者 说 是 范 围 。 此 函 数 将

请 参 阅 PBRANGE , PBM_GETRANGE

CProgressCtrl::OffsetPos

int OffsetPos( int nPos );

返 回 值

返 回 进 度 条 控 件 的 早 先 的 位 置 。

参 数

nPos

用 来 增 加 位 置 的 数 量 。

说 明

此 函 数 用 由 nPos 指 定 的 增 量 来 增 加 进 度 条 控 件 的 当 前 位 置 , 并 且 重 画 此 进 度条 来 反 映 新 的 位 置 。

请 参 阅 CProgressCtrl::SetPos, CProgressCtrl::SetRange , CProgressCtrl::StepIt

CProgressCtrl::SetPos

int SetPos( int nPos );

返 回 值

返 回 进 度 条 控 件 的 早 先 的 位 置 。

参 数

nPos

进 度 条 控 件 的 新 位 置 。

说 明

此 成 员 函 数 根 据 nPos 指 定 的 位 置 来 设 置 进 度 条 控 件 的 当 前 位 置 , 并 重 画 此 进度 条 来 反 映 新 的 位 置 。

进 度 条 的 这 个 位 置 不 是 它 在 屏 幕 上 的 物 理 位 置 , 而 是 在 SetRange 中 的 上 限 和 下限 范 围 之 间 的 位 置 。

请 参 阅 CProgressCtrl::OffsetPo s,CProgressCtrl::SetRange ,CProgressCtrl::StepIt

CProgressCtrl::SetRange

void SetRange( short nLower , short nUpper ); void SetRange32(int nLowe r , int nUpper );

参 数

nLower

指 定 范 围 的 下 限 ( 缺 省 值 是 零 ) 。

nUpper

指 定 范 围 的 上 限 ( 缺 省 值 是 100 ) 。

说 明

此 函 数 用 来 设 置 进 度 条 控 件 范 围 的 上 限 和 下 限 , 并 重 画 此 进 度 条 来 反 映 新 的 范围 。

成 员 函 数 SetRange32 为 进 度 条 设 置 32 位 的 范 围 。

请 参 阅 CProgressCtrl::OffsetPo s, CProgressCtrl::SetPo s, CProgressCtrl::StepIt

CProgressCtrl::SetStep

int SetStep( int nStep );

返 回 值

返 回 原 来 的 步 增 量 。

参 数

nStep

新 的 步 增 量 。

说 明

此 函 数 为 进 度 条 控 件 指 定 步 增 量 。 步 增 量 就 是 每 调 用 一 次 CProgressCtrl::StepIt

所 增 加 进 度 条 控 件 的 当 前 位 置 的 数 量 。

缺 省 的 步 增 量 是 10 。

请 参 阅 CProgressCtrl::OffsetPo s, CProgressCtrl::SetPo s, CProgressCtrl::StepIt

CProgressCtrl::StepIt

int StepIt();

返 回 值

返 回 进 度 条 控 件 的 原 来 的 位 置 。

说 明

此 函 数 用 步 增 量 来 增 加 一 个 进 度 条 控 件 的 当 前 位 置 。 该 步 增 量 由 成 员 函 数

CProgressCtrl::SetStep 来 设 定 。

请 参 阅 CProgressCtrl::SetPos, CProgressCtrl::SetRange , CProgressCtrl::SetStep