MFC - 进度条控件
进度条控件是一个窗口,应用程序可以使用它来指示冗长操作的进度。 它由一个矩形组成,随着操作的进行,该矩形从左到右逐渐填充系统突出显示颜色。 它由 CProgressCtrl 类表示。
这是 CProgressCtrl 类中的方法列表 −
| 序号 | 名称和描述 |
|---|---|
| 1 | Create 创建进度条控件并将其附加到 CProgressCtrl 对象。 |
| 2 | CreateEx 使用指定的 Windows 扩展样式创建进度控件并将其附加到 CProgressCtrl 对象。 |
| 3 | GetBarColor 获取当前进度条控件的进度指示条的颜色。 |
| 4 | GetBkColor 获取当前进度条的背景颜色。 |
| 5 | GetPos 获取进度条的当前位置。 |
| 6 | GetRange 获取进度条控件范围的下限和上限。 |
| 7 | GetState 获取当前进度条控件的状态。 |
| 8 | GetStep 检索当前进度条控件的进度条的步长增量。 |
| 9 | OffsetPos 将进度条控件的当前位置前进指定的增量,并重新绘制进度条以反映新位置。 |
| 10 | SetBarColor 设置当前进度条控件中进度指示条的颜色。 |
| 11 | SetBkColor 设置进度条的背景颜色。 |
| 12 | SetMarquee 打开或关闭当前进度条控件的选取框模式。 |
| 13 | SetPos 设置进度条控件的当前位置并重绘进度条以反映新位置。 |
| 14 | SetRange 设置进度条控件的最小和最大范围,并重新绘制进度条以反映新范围。 |
| 15 | SetState 设置当前进度条控件的状态。 |
| 16 | SetStep 指定进度条控件的步骤增量。 |
| 17 | StepIt 将进度条控件的当前位置前进一步增量(请参阅 SetStep),并重新绘制进度条以反映新位置。 |
让我们创建一个新的 MFC 应用程序。
步骤 1 − 将 Text 控件的 ID 更改为 并删除标题。
步骤 2 − 从工具箱中拖动进度控件。
步骤 3 − 为静态文本控件添加值变量。
步骤 4 − 为进度控件添加控件变量。
步骤 5 − 这是 OnInitDialog() 中的实现
BOOL CMFCProgressControlDlg::OnInitDialog() {
CDialogEx::OnInitDialog();
// 在系统菜单中添加"关于..."菜单项。
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL) {
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty()) {
pSysMenu -> AppendMenu(MF_SEPARATOR);
pSysMenu -> AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 设置该对话框的图标。 框架会自动执行此操作
// 当应用程序的主窗口不是对话框时
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO:在此处添加额外的初始化
m_progCtrl.SetRange(0,100);
for (int i = 0; i <= 100; i++) {
m_progCtrl.SetPos(i);
}
return TRUE; // 返回 TRUE 除非您将焦点设置到控件
}
步骤 6 − 当上面的代码被编译并执行时,您将看到以下输出。

