- MFC 教程
- MFC - 首页
- MFC - 概述
- MFC - 环境设置
- MFC - VC++ 项目
- MFC - 入门指南
- MFC - Windows 基础
- MFC - 对话框
- MFC - Windows 资源
- MFC - 属性表
- MFC - Windows 布局
- MFC - 控件管理
- MFC - Windows 控件
- MFC - 消息与事件
- MFC - ActiveX 控件
- MFC - 文件系统
- MFC - 标准 I/O
- MFC - 文档视图
- MFC - 字符串
- MFC - CArray
- MFC - 链表
- MFC - 数据库类
- MFC - 序列化
- MFC - 多线程
- MFC - Internet 编程
- MFC - GDI
- MFC - 库
- MFC 有用资源
- MFC - 快速指南
- MFC - 有用资源
- MFC - 讨论
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 - 将文本控件的 ID 更改为,并删除标题。
步骤 2 - 从工具箱中拖动进度控件。
步骤 3 - 为静态文本控件添加值变量。
步骤 4 - 为进度控件添加控件变量。
步骤 5 - 以下是 OnInitDialog() 中的实现
BOOL CMFCProgressControlDlg::OnInitDialog() {
CDialogEx::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
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);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
m_progCtrl.SetRange(0,100);
for (int i = 0; i <= 100; i++) {
m_progCtrl.SetPos(i);
}
return TRUE; // return TRUE unless you set the focus to a control
}
步骤 6 - 当上述代码编译并执行时,您将看到以下输出。