【MFC】带进度条的状态栏
00. 目录
文章目录
- 00. 目录
- 01. 案例概述
- 02. 开发环境
- 03. 关键技术
- 04. 程序设计
- 05. 秘笈心法
- 06. 源码下载
- 07. 附录
01. 案例概述
状态栏多用于显示程序执行的状态信息。但是,如果程序正在执行一个任务,状态栏如何描述程序的执行进度呢?最好的方法是在状态栏中放置一个进度条控件,由进度条控件显示执行进度。本例实现了一个具有进度条的状态栏,效果如下图所示。
02. 开发环境
系统环境:Windows 10
开发环境:Visual Studio 2019
03. 关键技术
在状态栏中显示进度条非常简单。只要将进度条的父窗口指定为状态栏,再适当设置进度条显示的位置就可以了。在使用进度条控件时,可以使用SetRange方法来设置进度条控件的范围。
语法格式如下:
CProgressCtrl::SetRangevoid SetRange( short nLower, short nUpper );
void SetRange32( int nLower, int nUpper );参数: nLower 指定范围的下限(缺省值是零)。 nUpper 指定范围的上限(缺省值是100)。 说明:此函数用来设置进度条控件范围的上限和下限,并重画此进度条来反映新的范围。成员函数SetRange32为进度条设置32位的范围。
04. 程序设计
(1)新建一个基于对话框的工程。
(2)在对话框类中定义一个CStatusBar变量m_StatusBar和一个CProgressCtrl变量m_Progress。
(3)在对话框的OnInitDialog方法中创建状态栏和进度条。
// CMy1StatusDlg 消息处理程序BOOL CMy1StatusDlg::OnInitDialog()
{CDialogEx::OnInitDialog();// 将“关于...”菜单项添加到系统菜单中。// IDM_ABOUTBOX 必须在系统命令范围内。ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != nullptr){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); // 设置小图标m_StatusBar.Create(this);UINT panels[6];for (int i = 0; i < 6; i++){panels[i] = 1000 + i;}m_StatusBar.SetIndicators(panels, 6);CRect rect;GetClientRect(rect);int width = rect.Width() / 6;for (int i = 0; i < 6; i++){m_StatusBar.SetPaneInfo(i, panels[i], SBPS_NORMAL, width);}//设置面板信息m_StatusBar.SetPaneText(0, TEXT("当前用户"));m_StatusBar.SetPaneText(1, TEXT("沧海一笑"));m_StatusBar.SetPaneText(2, TEXT("当前状态"));m_StatusBar.SetPaneText(4, TEXT("日期"));//获取当前时间CTime time;time = CTime::GetCurrentTime();m_StatusBar.SetPaneText(5, time.Format("%Y-%m-%d"));RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);//设置定时器//SetTimer(1, 1000, NULL);m_StatusBar.GetStatusBarCtrl().GetRect(3, &rect);CRect progRect(rect.left, 2, rect.right, rect.Height() + 2);m_ProgressCtrl.Create(PBS_SMOOTH, progRect, &m_StatusBar, 1111);m_ProgressCtrl.ShowWindow(SW_SHOW);m_ProgressCtrl.SetRange(0, 100);m_ProgressCtrl.SetPos(45);return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
05. 秘笈心法
状态栏中进度条的用处
在状态栏中显示进度条是普遍的用法,实例中先创建状态栏,确定状态栏控件的位置后再创建进度条控件,将状态栏设置为进度条控件的父窗体,这样当状态栏的大小发生变化时,可以及时通知进行条控件。实例中并没有实现这一功能,如果要实现这一功能需要重新定义状态栏类,以便获取控件大小发生改变时的消息。
06. 源码下载
下载:【MFC】带进度条的状态栏.rar
07. 附录
参考: 《Visual C++从入门到精通(项目案例版)》
【MFC】带进度条的状态栏相关推荐
- web app升级—带进度条的App自动更新
带进度条的App自动更新,效果如下图所示: 技术:vue.vant-ui.5+ 封装独立组件AppProgress.vue: <template><div><van- ...
- 带进度条的ASP无组件断点续传下载代码
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <%Option Explicit%> <% '= ...
- atitit. 文件上传带进度条 atiUP 设计 java c# php
atitit. 文件上传带进度条atiUP设计java c# php 1. 设计要求 1 2. 原理and架构 1 3. ui 2 4. spring mvc 2 5. springMVC.xml 3 ...
- Android更新带进度条的通知栏
在网上查询了下,Android版本号更新通知栏带进度条,醉了,基本都是复制过来.有的代码不全,连源代码下载都没有,有下载也须要积分.还不能用.真黑心啊!! 之前自己也写过自己定义通知栏Notifica ...
- 用MediaPlayer做个带进度条可后台的音乐播放器
传送到github看源码 下载apk试用 密码:rukn 前言 想在天朝听音乐还是有些难度的, 一般来说, 两三个app还是要的. 那何不尝试自己做个手机播放器, 听个爽呢?!今天就带大家先做个简单的 ...
- [整理] C#调用SQLDMO.DLL时间数据库备份 / 还原。 (香神无涯) // C#实现SQLSERVER2000数据库备份还原的两种方法 (带进度条)...
/// <summary> /// 通过调用MSSQL的SQLDMO.DLL文件来实现备份数据库 /// 1.首先在在项目中引用SQLDMO.DLL文件. /// 2.在引用中的SQLDM ...
- php带截切图片上传_PHP大文件切割上传并带进度条功能示例
本文实例讲述了PHP大文件切割上传并带进度条功能.分享给大家供大家参考,具体如下: 前面一篇介绍了PHP大文件切割上传功能,这里再来进一步讲解PHP大文件切割上传并带进度条功能. 项目结构图: 14- ...
- 自定义带进度条的WebView , 增加获取web标题和url 回掉
1.自定义ProgressWebView package com.app.android05; import android.content.Context; import android.graph ...
- Android开发之带进度条的WebView
老套路先看效果: 直接上代码: 区分java和kotlin版本 Java版本: package com.example.progresswebview;import android.os.Bundle ...
最新文章
- 神经科学如何影响人工智能?看DeepMind在NeurIPS2020最新《神经科学人工智能》报告,126页ppt...
- 你以为的ASP.NET文件上传大小限制是你以为的吗
- HashMap HashTable和ConcurrentHashMap的区别
- Android自定义进度条
- 牛客题霸 NC1 大数加法
- js算法初窥06(算法模式03-函数式编程)
- Android之如何ubuntu环境下在手机里面快速找到apk的位置然后拉下来
- java 语音匹配,java-语音识别,是否可以通过正则表达式确定用户所说的内容?
- 奉劝那些想学编程的人
- node.js用get方式获取网页中的链接
- 实践详细篇-Windows下使用VS2015编译的Caffe训练mnist数据集
- Java成员变量查找_Java中的成员变量和局部变量
- 实战 SQL!金融机构可疑支付交易的监测 | 原力计划
- Java与MySQL连接错误_mysql连接错误
- 单片机固件烧录器 Firmware Writer Android APP
- 反向代理——Nginx
- 虚拟机未安装音频设备_如何使用虚拟音频设备录制PC的音频
- 矩阵的转置matlab,矩阵的转置表示 matlab中矩阵的转置怎么表示
- HBuilderX 打包 vue 项目生成 apk
- 第五次作业—— 四则运算“软件”开发
热门文章
- TCP与UDP网络编程总结(一)
- Ruby Regexp
- .net 浏览器请求过程(图)
- python列表索引超出范围 等于啥_python中的“列表索引超出范围”
- 笔记本网络计算机和设备不可见,xp电脑不显示无线网络的七种原因和解决方法...
- 每日程序C语言34-利用指针将输入的三个数排序
- andrew ng machine learning week4 神经网络
- 【知了堂学习笔记】java 编写几种常见排序算法3
- ==与equals 的使用比较
- 《DB 查询分析器》中断SQL语句的执行