平台:VS2005;

资料参考:来源于网络;

内容介绍:创建自绘进度条,并在进度条上显示当前进度的百分比。

第一步:创建基于对话框的工程,在对话框中放置一个进度条控件,

把进度条控件的属性Smooth设置为真。

第二步:

【1】添加基于进度条CProgressCtrl控件新类CMyProCtrl;

【2】为CMyProCtrl类添加WM_PAINT消息

【3】为CMyProCtrl类添加public变量如下:

COLORREF m_ColText;//文本颜色

COLORREF m_ColProgress;//进度条颜色

COLORREF m_ColBlank;//空白区域颜色

【4】在CMyProCtrl类构造函数中初始化变量:

m_ColText=RGB( 255, 0, 0);//文本颜色

m_ColProgress=RGB( 0, 255, 255);//进度条颜色

m_ColBlank=RGB( 192, 192, 192);//空白区域颜色

【5】在CMyProCtrl类OnPaint()中添加:

PAINTSTRUCT ps;//声明一个绘画区域

CDC *pDC=BeginPaint(&ps);//把绘画区域选入设备上下文并开始

int AdrPos=GetPos();//获取进度条的进度位置

CString StrPos;//声明字符串,用于显示进度条的进度

StrPos.Format ("%d%%",AdrPos);//把进度位置复制到StrPos

CRect ClientRC;

GetClientRect(&ClientRC);//获取客户区矩形

CSize CsText=pDC->GetTextExtent (StrPos);//获取显示StrPos的规模大小

int nX=(ClientRC.Width ()-CsText.cx )/2;//获取显示字符串的X

int nY=(ClientRC.Height ()-CsText.cy )/2;//获取显示字符串的Y

pDC->SetBkMode (TRANSPARENT);//设置背景模式为透明

int nMin,nMax;//声明进度条的最大最小限制

GetRange(nMin,nMax);//获取限制

double Every=(double)ClientRC.Width ()/(nMax-nMin);//获取单位刻度

int Now=Every*AdrPos;//当前长度

CRect LeftRC,RightRC;//声明进度条区域和空白区域

LeftRC=RightRC=ClientRC;

LeftRC.right =Now;//进度条区域

RightRC.left =Now;//空白区域

pDC->FillRect (LeftRC,&(CBrush)m_ColProgress);//画进度条区域

pDC->FillRect (RightRC,&(CBrush)m_ColBlank);//画空白区域

pDC->SetTextColor (m_ColText);//设置文本颜色

pDC->TextOutA (nX,nY,StrPos);//写文本

ReleaseDC(pDC);//销毁设备上下文

EndPaint(&ps);//结束绘画区域绘画

【6】把在CMyProCtrl类的头文件包含到对话框程序中;给进度条控件添加基于CMyProCtrl类的变量:m_ProCtrl

【7】为对话框程序添加WM_TIMER消息

SetTimer(1,100,NULL);

//在对话框程序初始化函数中开启时钟

在对话框程序OnTimer(UINT_PTR nIDEvent)中添加:

int NowPos=m_Progress.GetPos();//获取当前进度

m_Progress.SetPos (NowPos+1);//设置进度

【8】拓展:若要用位图绘画进度条,只需把CMyProCtrl类中的画刷换成位图画刷。

pDC->FillRect (LeftRC,&(CBrush)m_ColProgress);//画进度条区域

pDC->FillRect (RightRC,&(CBrush)m_ColBlank);//画空白区域

效果图:

创建自绘进度条,并在进度条上显示当前进度的百分比相关推荐

  1. ajax实现上传文件的进度,基于Ajax技术实现文件上传带进度条

    1.概述 在实际的Web应该开发或网站开发过程中,经常需要实现文件上传的功能.在文件上传过程中,经常需要用户进行长时间的等待,为了让用户及时了解上传进度,可以在上传文件的同时,显示文件的上传进度条.运 ...

  2. Flex4/Flash多文件上传(带进度条)实例分享

    要求 必备知识 本文要求基本了解 Adobe Flex编程知识和JAVA基础知识. 开发环境 MyEclipse10/Flash Builder4.6/Flash Player11及以上 演示地址 演 ...

  3. html资源文件记载进度条,HTML5矢量实现文件上传进度条

    在HTML中,在文件上传的过程中,很多情况都是没有任何的提示,这在体验上很不好,用户都不知道到时有没有在上传.上传成功了没有,所以今天给大家介绍的内容是通过HT for Web矢量来实现HTML5文件 ...

  4. AngularJS PrimeNG 上传文件 进度条

    AngularJS PrimeNG 上传文件 进度条 1.思路: 2.父页面代码实现: 3.子页面代码实现 1.思路: 使用p-progressBar,创建一个新画面,浮在p-fileUpload组件 ...

  5. ssm上传文件进度条_Java 单文件、多文件上传 / 实现上传进度条

    日常,工作 在这里总结一下上传吧(是以前做过的练习,就汇总到个人博客吧) java ssm 框架实现文件上传 实现:单文件上传.多文件上传(单选和多选),并且用 ajax 异步刷新,在当前界面显示上传 ...

  6. html 可调节进度条控件,jQuery简单实用的轻量级进度条插件

    jQMeter是一款简单实用的轻量级进度条jQuery插件,它可以显示为水平或垂直进度条,进度条加载时带有动画特效,你只需要简单的传入一些参数到jQMeter对象的构造函数中就可以完成你想要的进度条效 ...

  7. 使用ASP.NET Atlas编写显示真实进度的ProgressBar(进度条)控件

    当后台在进行某些长时间的操作时,如果能在页面上提供一个显示真实进度的进度条,而不是让用户不知情的等待或是从前的那些简单的估计,将是一个非常难得的出彩之处.现在使用ASP.NET Atlas完全有可能做 ...

  8. 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 ...

  9. java fileupload 进度_Java上传文件进度条的实现方法(附demo源码下载)

    本文实例讲述了Java上传文件进度条的实现方法.分享给大家供大家参考,具体如下: 东西很简单,主要用到commons-fileupload,其中有一个progressListener的接口,该接口可以 ...

最新文章

  1. 将Excel文件数据库导入SQL Server
  2. 手持终端以物联网的模式
  3. 动态规划-换钱最少货币数
  4. Java中用户向系统传递参数的三种基本方式
  5. python交互模式切换_Python 交互式窗口 (REPL) - Visual Studio | Microsoft Docs
  6. Android之开源框架NineOldAndroids动画库
  7. node 创建静态服务器并自动打开浏览器
  8. javascript(jQuery版)切换tab效果自动切换(转自www.jqueryba.com)
  9. Python_将conda里的环境导入到pychram中
  10. Request.Querystring中文乱码问题解决
  11. mysql version 50713_MySQL 5.6 升级为 MySQL 5.7
  12. steam怎么设公用计算机,steam怎么设置家庭共享 steam家庭共享设置方法
  13. 如何查看计算机关机事件,深度技术win7系统如何查看电脑的开关机时间【图文】...
  14. 测试测量 | 【一】如何实现生产过程中的自动化测试?——成功的自动测试系统的目标及面临的问题
  15. 【2019多校第一场补题 / HDU6578】2019多校第一场A题1001Blank——dp
  16. 永别了,内涵段子APP及公众号被永久关停!!!!
  17. Word2013论文的目录和页眉页脚设置
  18. a session ended very soon after starting. check that the command in profile XXX is correct
  19. 轻松解读仿生学最优化算法(一)——遗传算法
  20. 京东生鲜全品类爬虫--往期创作整理

热门文章

  1. 2021年中国基于Web的医疗计费软件市场趋势报告、技术动态创新及2027年市场预测
  2. 华为matebooke不能下python_华为MateBookE2019体验 到底怎么样
  3. Quartz Scheduler 更新任务触发器
  4. 基于fpga的fir滤波器设计,通过matlab代码设计滤波器参数,最终通过fpga实现
  5. 瑞利信道下基于判决反馈的16QAM信道均衡(matlab源码)
  6. 2022-09-19
  7. 晨曦记账本关于取回和修改密码的方法
  8. 关于低碳物流中心选址问题的MATLAB遗传算法
  9. Bpmn(业务流程模型)文档和在线Demo整理
  10. 软件产品登记(双软认证)