MFC状态栏的创建与添加进度条
1.首先要创建状态栏
MFC中创建状态栏是用数组来分隔格子的.所以要先弄个数组
下面在自己继承的CWnd类.cpp文件中定义一个静态数组indicators
static UINT indicators[]=
{
IDS_STRING104,
IDS_PROGRESS,
IDS_STRING105,
IDS_STRING106
};
这里面的值,可以自己定义,也可以在字符资源中定义
MFC教程是让在字符串资源文件中定义

下面来创建状态栏了,在MyWnd的WM_CREATE消息中创建,
即OnCreate()函数中
m_statusBar是在类的.h文件中定义的成员变量
CStatusBar m_statusBar;
//创建状态栏
m_statusBar.CreateEx(this);
m_statusBar.SetIndicators(indicators, sizeof(indicators) / sizeof(UINT));//用静态数组来分隔状态栏
m_statusBar.SetPaneInfo(0, IDS_STRING104, SBPS_STRETCH, 0);//设置第一格子填充剩余的空间
m_statusBar.SetPaneInfo(1,IDS_PROGRESS, SBPS_NORMAL, 100);//设置第二格子的宽度,为添加进度条的宽度
这样就创建好了状态栏了.
2.添加进度条到状态栏中
要想把进度条放到状态栏中,首先要获取状态栏中要放置的格子区域大小,
我要放在第二个格子中,所以就要获取状态栏第二个格子的区域大小.
用状态栏的成员函数GetItemRect()可以获取指定格子的区域
CRect rect;
m_statusBar.GetItemRect(1, &rect);
为了防止窗口大小改变这区域也要相应的改变,所以我把创建进度条放在了WM_SIZE消息中,即OnSize()函数中
m_progressState为类的成员变量,定义在类的.h文件中
CProgressCtrl m_progressState;
void MyWnd::OnSize(UINT nType, int cx, int cy)
{
CFrameWnd::OnSize(nType, cx, cy); // TODO: 在此处添加消息处理程序代码
CRect rect;
m_statusBar.GetItemRect(1, &rect);//获取第二个格子的区域大小
if (m_progressState.m_hWnd) //判断进度条是否创建了,没创建就创建,创建了就移动到第二个格子的位置
{
m_progressState.MoveWindow(rect);//移动进度条
}
else
{
m_progressState.Create(WS_CHILD | WS_VISIBLE | PBS_SMOOTH, rect, &m_statusBar, 123);//创建进度条,位置就是状态栏的第二格子,父窗口为状态栏
m_progressState.SetRange(0, 100);//设置进度条的取值范围
m_progressState.SetPos(50); //设置进度条的当前位置
}
}
书上说的是放在WM_PAINT消息中.也可以,看自己的心情呀,反正都一样.
3.效果展示

MFC状态栏的创建与添加进度条的更多相关文章
- EasyUI添加进度条
EasyUI添加进度条 添加进度条重点只有一个,如何合理安排进度刷新与异步调用逻辑,假如我们在javascript代码中通过ajax或者第三方框架dwr等对远程服务进行异步调用,实现进度条就需要做到以 ...
- QTableView 添加进度条
记录一下QTableView添加进度条 例子很小,仅供学习 使用QItemDelegate做的实现 有自动更新进度 要在.pro文件里添加 CONFIG += c++ ProgressBarDeleg ...
- struts2上传文件添加进度条
给文件上传添加进度条,整了两天终于成功了. 想要添加一个上传的进度条,通过分析,应该是需要不断的去访问服务器,询问上传文件的大小.通过已上传文件的大小, 和上传文件的总长度来评估上传的进度. 实现监听 ...
- c#devexpress GridContorl添加进度条
demo 的实现图 下边是步骤和代码 1定义 时钟事件,定时的增加进度条的增量. 2: 添加进度条 3;定义字段属性 using System; using System.Collections.G ...
- iOS WKWebView添加进度条02
之前写了一个是关于webview添加进度条的,现在补一个WKWebView进度条. //添加一个全局属性 @property(nonatomic,strong)CALayer *progresslay ...
- iOS-仿支付宝加载web网页添加进度条
代码地址如下:http://www.demodashi.com/demo/11727.html 目前市场上APP常会嵌入不少的h5页面,参照支付宝显示web页面的方式, 做了一个导航栏下的加载进度条. ...
- WebView的使用及添加进度条
实现的效果比较简单类似于微信打开网页,头部有个进度条显示加载进度 下载地址:http://download.csdn.net/detail/qq_29774291/9666941 1.在安卓端加载一个 ...
- 继承QAbstractTableModel QStyledItemDelegate实现自定义表格,添加进度条和选中框。
由于项目要求,需要实现一个列表目录显示信息,并且需要实现每一项提供进度条和选项框功能,所以需要继承QAbstractTableModel和QStyledItemDelegate进行自定义. -自定义数 ...
- ASP添加进度条
今日在学习JavaScript所有写个通用的进度条,防止网页假死.让用户更清楚地知道此网页正在进行加载或者处理一些事情,所有加载进度条是一个网站的必要性. 在网页中Page_load首先要加载此进度条 ...
- JDK一键部署, 新添加进度条
JDK部署, 脚本与JDK安装包放在同一目录 然后执行 source ./jdk.sh 稍等进度条100%即可 #******************************************* ...
随机推荐
- Kubernetes 存储资源 PV、PVC 和StorageClass详解
一.存储机制介绍 在 Kubernetes 中,存储资源和计算资源(CPU.Memory)同样重要,Kubernetes 为了能让管理员方便管理集群中的存储资源,同时也为了让使用者使用存储更加方便,所 ...
- 数据源dataSource以及事务tx的xml文件配置方式及代码配置方式
所需要使用的依赖 <dependencies> <!--spring jdbc Spring 持久化层支持jar包--> <dependency> <grou ...
- VulnHub_DC-6渗透流程
DC-6 kali:192.168.157.131 靶机:192.168.157.150 修改host文件,添加192.168.157.150 wordy不然解析不了域名 信息收集 发现是WordPr ...
- SpringBoot中的一些组件
Redis 引入data-redis-starter <dependency> <groupId>org.springframework.boot</groupId ...
- JS --函数进阶 --手稿
- Java基本数学运算之Math类
什么是Math类 Java操作数学运算相关的类 构造函数被私有化,所以不允许创建对象 都是静态方法,使用是直接类名.方法名 常用API //计算平⽅根 System.out.println(Math. ...
- SqlParameter,参数化查询问题
SqlParameter p = new SqlParameter("@pageIndex", (object)pageIndex); SqlParameter带有两个参数的构造函 ...
- 介绍几款强大实用的 IDEA 插件,助力大家开发【工欲善其事必先利其器】
俗话说:"工欲善其事必先利其器",本问介绍几款强大实用的 IDEA 插件,助力大家开发. 希望大家做一个聪明又努力的人,而不只是一个努力的人. Alibaba Java Codin ...
- 实用!一键生成数据库文档的神器,支持MySQL/SqlServer/Oracle多种数据库
Screw(螺丝钉)是一款简洁好用的数据库表结构文档生成工具,它的特点是:简洁.轻量.设计良好.多数据库支持.多种格式文档.灵活扩展以及支持自定义模板,对于有经常要进行数据库设计.评审.文档整理等需求 ...
- 固定panel1,panel2适应窗体变化
固定panel1,panel2适应窗体变化 如果您想要固定 Panel1 并且让 Panel2 适应窗体大小的变化,可以使用以下方式设置 SplitContainer 的属性: ' 设置 Spli ...