MFC 进度条使用方法[通俗易懂]

MFC 进度条使用方法[通俗易懂]目的:学习MFC进度条控件的用法;步骤:新建一个对话框项目。添加控件“progress”“static”è改名了“进度”,添加两个BUTTON名字分别为“后退”“前进”,如下图:为static控件添加CString类型的数据变量m_present;为progress添加control类型的数据变量m_pro初始化进度条:右键classwinzerd,选中如下项目

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

目的:学习MFC 进度条控件的用法;

步骤:

新建一个对话框项目。添加控件“progress”“static”è改名了“进度”,添加两个BUTTON名字分别为“后退”“前进”,如下图:

MFC 进度条使用方法[通俗易懂]

为static控件添加CString类型的数据变量m_present;为progress添加control类型的数据变量m_pro

初始化进度条:右键classwinzerd,选中如下项目

MFC 进度条使用方法[通俗易懂]

Edit Code 后添加如下代码:

m_pro.SetRange(0,100);//设置进度条的显示范围

       m_pro.SetPos(0);//进度条初始状态为显示零

       inti,j,npos;

       m_pro.GetRange(i,j);//得到进度条当前的显示的范围

       npos=m_pro.GetPos();//得到进度条当前的进度

       m_present.Format(“%4.0f%%”,(float)npos/(float)(j-i)*100.0);//在static控件中显示当前的进度

       UpdateData(FALSE);//static控件现实当前的进度

 

       SetTimer(1,500,NULL);//每隔0.5秒触发ontimer事件使其前进

       returnTRUE;  // return TRUE  unless you set the focus to a control

 

处理前进按钮的事件:双击此按钮添加如下事件

int i,j;

       m_pro.GetRange(i,j);//获取进度条表示的范围

       intnpos=m_pro.GetPos();//当前进度条位置

      

       npos+=5;//单击此按钮一次使进度条进度自动加5

       if(npos>j)//如果进度条当前的进度比进度条所能表示的进度大

              npos=j;//则进度条进度到最大位置不再前进

       m_pro.SetPos(npos);//设置进度条新的进度      

       m_present.Format(“%4.0f%%”,(float)npos/(float)(j-i)*100.0);//将进度转化为百分制

       UpdateData(FALSE);

处理后退按钮事件:双击此按钮添加如下事件

       inti,j;

       m_pro.GetRange(i,j);//获取当前范围

       intnpos=m_pro.GetPos();//当前进度条位置

       npos-=5;

       if(npos<i)

              npos=i;   

       m_pro.SetPos(npos);    

       m_present.Format(“%4.0f%%”,(float)npos/(float)(j-i)*100.0);

       UpdateData(FALSE);

 

添加事件,使其每隔0.5秒前进一次:

MFC 进度条使用方法[通俗易懂]

Add FunctionèEdit Code后作如下处理:在initdialog()中添加上面红色粗体的代码

再在TIMER()中添加如下代码

void CMyDlg::OnTimer(UINT nIDEvent) //似的每隔一段时间进度条自动前进5

{

       //TODO: Add your message handler code here and/or call default

       if(nIDEvent==1)

       {

              inti,j,npos;

              m_pro.GetRange(i,j);

              npos=m_pro.GetPos();

              m_present.Format(“%4.0f%%”,(float)npos/(float)(j-i)*100.0);

              UpdateData(FALSE);

              m_pro.StepIt();

       }

       CDialog::OnTimer(nIDEvent);

}

当然在结束程序后应该释放TIMER于是我们有这样的函数:

MFC 进度条使用方法[通俗易懂]

void CProgressinDlg::OnDestroy()

{

       CDialog::OnDestroy();

       KillTimer(1);

}

注意, SetStep:缺省情况下让它自动前进一格的对应的数字是多少

StepIt:自动前进

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157796.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • spring spel表达式_Substring

    spring spel表达式_Substring1.什么是SpEL表达式SpEL表达式语言是一种表达式语言,是一种可以与一个基于spring的应用程序中的运行时对象交互的东西。有点类似于ognl表达式。总得来说SpEL表达式是一种简化开发的表达式,通过使用表达式来简化开发,减少一些逻辑、配置的编写。2.使用XML方式实现SpEL表达式

    2025年10月31日
    3
  • Dell服务器误删阵列恢复操作

    Dell服务器误删阵列恢复操作确认机器是否阵列(此例为阵列五)已丢失,然后配置idrac配置完成退出BIOS,让机器自然运行,进不去系统没关系正常磁盘掉线状态为Foreign,目前操作是误删了阵列所以磁盘全为ready模式,Foreign那块是后加的raid0(导回即可)这边机器退出BIOS开机以后,需要idrac收集一份日志(日志系统日志与存储日志)然后排查日志,发现日志有删除动作,但是没有格式化磁盘(应该是误删操作)在误删阵列,但是没有格式化的情况下啊,大概率实现资料恢复(先确认机器之前是什.

    2022年6月15日
    93
  • java中newInstance()方法的作用

    java中newInstance()方法的作用

    2021年7月16日
    119
  • gg修改器修改数值没有用怎么办_GG修改器详细使用教程[通俗易懂]

    gg修改器修改数值没有用怎么办_GG修改器详细使用教程[通俗易懂]今天呢主要是为了给那些刚刚接触GG的小白朋友们一个教程大佬们请无视这个帖子我看到很多知乎的朋友们不会使用GG,所以俺来了,希望能帮到大家❤另外谢谢各位盆友们支持我❤废话不多说上教程!!1.首先是GG修改器怎么下载看不懂英文的朋友按照图片顺序操作即可2.接下来是下载好以后需要做什么然后就是如何进去GG修改器安装模式一般都是选择64位安装成功后会进行随机包名安装随机包以后卸载之前安装成功那给新安装…

    2025年9月14日
    7
  • primarykey的用法_什么是primarykey

    primarykey的用法_什么是primarykeyprimarykey是主键一般为自动增长并且是非空int类型的,主要用来保证数据的唯一性;Key是索引约束,对表中字段进行约束索引的,都是通过primaryforeignunique等创建的。常见有foreignkey,外键关联用的;MYSQL建立数据表时,KEY的设置有什么用?key是指关键字,在每一个表所有记录中唯一,普通的表一般可以省去这一项。另外,设置了

    2025年7月26日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号