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状态栏的创建与添加进度条的更多相关文章

  1. EasyUI添加进度条

    EasyUI添加进度条 添加进度条重点只有一个,如何合理安排进度刷新与异步调用逻辑,假如我们在javascript代码中通过ajax或者第三方框架dwr等对远程服务进行异步调用,实现进度条就需要做到以 ...

  2. QTableView 添加进度条

    记录一下QTableView添加进度条 例子很小,仅供学习 使用QItemDelegate做的实现 有自动更新进度 要在.pro文件里添加 CONFIG += c++ ProgressBarDeleg ...

  3. struts2上传文件添加进度条

    给文件上传添加进度条,整了两天终于成功了. 想要添加一个上传的进度条,通过分析,应该是需要不断的去访问服务器,询问上传文件的大小.通过已上传文件的大小, 和上传文件的总长度来评估上传的进度. 实现监听 ...

  4. c#devexpress GridContorl添加进度条

    demo 的实现图 下边是步骤和代码 1定义 时钟事件,定时的增加进度条的增量. 2:  添加进度条 3;定义字段属性 using System; using System.Collections.G ...

  5. iOS WKWebView添加进度条02

    之前写了一个是关于webview添加进度条的,现在补一个WKWebView进度条. //添加一个全局属性 @property(nonatomic,strong)CALayer *progresslay ...

  6. iOS-仿支付宝加载web网页添加进度条

    代码地址如下:http://www.demodashi.com/demo/11727.html 目前市场上APP常会嵌入不少的h5页面,参照支付宝显示web页面的方式, 做了一个导航栏下的加载进度条. ...

  7. WebView的使用及添加进度条

    实现的效果比较简单类似于微信打开网页,头部有个进度条显示加载进度 下载地址:http://download.csdn.net/detail/qq_29774291/9666941 1.在安卓端加载一个 ...

  8. 继承QAbstractTableModel QStyledItemDelegate实现自定义表格,添加进度条和选中框。

    由于项目要求,需要实现一个列表目录显示信息,并且需要实现每一项提供进度条和选项框功能,所以需要继承QAbstractTableModel和QStyledItemDelegate进行自定义. -自定义数 ...

  9. ASP添加进度条

    今日在学习JavaScript所有写个通用的进度条,防止网页假死.让用户更清楚地知道此网页正在进行加载或者处理一些事情,所有加载进度条是一个网站的必要性. 在网页中Page_load首先要加载此进度条 ...

  10. JDK一键部署, 新添加进度条

    JDK部署, 脚本与JDK安装包放在同一目录 然后执行 source ./jdk.sh 稍等进度条100%即可 #******************************************* ...

随机推荐

  1. Kubernetes(三)实战入门

    实战入门 本章介绍如何在kubernetes集群中部署一个nginx服务,并能够对其进行访问. 1. Namespace Namespace主要作用是实现多套环境的资源隔离或者多租户的资源隔离. 默认 ...

  2. STM32 CubeMX 学习:002-外部中断的使用

    背景 上一讲 STM32 CubeMX 学习:GPIO的使用 介绍了如何配置以及操作GPIO引脚. 这一讲我们通过中断来控制按键.关于中断的概念不做介绍. HOST-OS : Windows-10 S ...

  3. 记一次难忘的json反序列化问题排查经历

    前言 最近我在做知识星球中的商品秒杀系统,昨天遇到了一个诡异的json反序列化问题,感觉挺有意思的,现在拿出来跟大家一起分享一下,希望对你会有所帮助. 案发现场 我最近在做知识星球中的商品秒杀系统,写 ...

  4. RPC和心跳机制

    hadoop在节点间的内部通讯使用的是RPC,RPC协议把消息翻译成二进制字节流发送到远程节点,远程节点再通过反序列化把二进制流转成原始的信息. namenode与datanode之间的通信,jobt ...

  5. ubuntu16 python2 安装M2Crypto报错

    正文 pip2 install M2Crypto # 报错: # unable to execute 'swig': No such file or directory # error: comman ...

  6. debian11安装备忘

    1. 网卡驱动 参考网址:如何安装Debian RTL8821CE驱动? 2. 分辨率 貌似还是有点问题,还要进一步研究一下 参考网址:虚拟机中debian11修改控制台(console)分辨率|li ...

  7. Java List对象分组

    实体类 必须重写equals和hashCode方法 package com.zcsoft.rc.backend.biz.vo.securityLibary; import java.util.Date ...

  8. Java 面向对象编程之接口

    什么是接口? 是抽象方法的集合,接口通常以interface来声明,一个类通过继承接口的方式,从而来继承接口的抽象方法 语法 interface 名称 [extends 其他的接⼝名] { // 声明 ...

  9. 新版SpringBoot-Spring-Mybatis事务控制

    快速创建SpringBoot+Spring+Mybatis项目 https://start.spring.io 删除pom中mysql依赖的runtime pom.xml中添加druid依赖 < ...

  10. 在Visual Studio Code中,鼠标双击PHP变量的时候,如何选择包括$在内的整个变量名

    依次点击:文件->首选项->设置 并在"editor.wordSeparators"设置中为您的语言指定删除"$"符号: