缘起

   作为MFC开发的一枚老鸟,最近感觉自己写的程序太low。于是决定学习一下进度条,在自己的程序中加入进度条,提高自己程序的逼格。于是便有个此文。
  • 1
  • 2
  • 3

环境

配置  
系统 WIN7 SP1
IDE VS2013

入手

1.添加控件

在界面添加一个进度条

2.关联变量

使用类向导关联变量

    CProgressCtrl m_proGress;                               // 进度条 控件
  • 1

不使用类向导的话需在系统函数

    void CDlg::DoDataExchange(CDataExchange* pDX)
  • 1

另外添加

    DDX_Control(pDX, IDC_PROGRESS, m_proGress);             // 关联控件
  • 1

3.初始化

VS2008和VS2005可能没有这个函数,需要手动添加,如果你不会添加,看看这里吧。 
一般初始化就是设置控件的范围之类的。

   BOOL CDlg::OnInitDialog(void){CDialog::OnInitDialog();m_proGress.SetRange(0,100);m_proGress.SetStep(1);m_proGress.SetPos(0);return 0;}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

4.程序调用

void CProgressDemoDlg::OnStart()
{for(int i = 0; i<100; i++){m_proGress.SetPos(i);//m_proGress.StepIt();  //这样也可以}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

进阶

这样就满足了,当然不行。为了避免在Button按钮中,执行任务长时间从而导致的界面无响应。
在本节中我们使用多线程的方式控制进度条。
  • 1
  • 2
  • 3

CThread类 【我是干(ku)活(bi)的】

// Thread.h
#pragma once
#include <process.h>
#include <Windows.h>#define WM_USER_MSG WM_USER + 1001class CThread
{public:// 线程回调函数必须是全局函数static void Run(void *ptr);
public:CThread(void);~CThread(void);
};
// Thread.cpp
#include "StdAfx.h"
#include "Thread.h"void CThread::Run( void *ptr )
{ HWND hWnd = (HWND)ptr;for (int i=0;i<100;++i){::PostMessage(hWnd,WM_USER_MSG,WPARAM(i),LPARAM(0));Sleep(100);}AfxMessageBox("完成");::PostMessage(hWnd,WM_USER_MSG,WPARAM(0),LPARAM(0));_endthread();
}CThread::CThread(void)
{
}
CThread::~CThread(void)
{
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

对话框类【我是用来显(xian)示(bai)的】

// 消息映射
ON_MESSAGE(WM_USER_MSG, &CThreadProgDlg::OnMsg)
// OnInitDialog
CProgressCtrl *prog = (CProgressCtrl *)GetDlgItem(IDC_PROGRESS1);
prog->SetRange(0,100);
// 消息响应
void CThreadProgDlg::OnBnClickedOk()
{// TODO: 在此添加控件通知处理程序代码_beginthread(&CThread::Run,0,this->GetSafeHwnd());//CDialogEx::OnOK();
}LRESULT CThreadProgDlg::OnMsg( WPARAM wp,LPARAM lp )
{CProgressCtrl *prog = (CProgressCtrl *)GetDlgItem(IDC_PROGRESS1);prog->SetPos((int)wp);return 1L;
}

MFC中进度条的学习相关推荐

  1. MFC中进度条控件的使用方法

    进度条控件是程序开发中基础控件之一,常用于显示程序的进度.在进行程序安装.文件传输时经常用到.其用法也比较简单固定. 转自:http://jingyan.baidu.com/article/95c9d ...

  2. Android中进度条控件使用

    android中进度条控件使用 ProgressBar pb = findViewById(R.id.pb);pb.setMax(100);pb.setProgress(33); 转载于:https: ...

  3. MFC创建处理中进度条,循环滚动进度条的方法

    创建一个不显示实际进度的循环滚动进度条,类似于Windows XP启动界面的进度条 新建一个MFC项目TestProgress,编辑界面,添加一个进度条,两个按钮,实现点击start进度条循环滚动,点 ...

  4. SegeX Progress:MFC通用进度条

    ----哆啦刘小洋 原创,转载需说明出处 MFC高级通用进度条-目录 1 简介 2 进度条实现基本原理 3 使用方法 3 .1 简单情况 3.2 两个前后独立的进度条 3.3 实际应用的一般情况 3. ...

  5. MFC环形进度条实现

    MFC只支持横/竖条形进度条,并不支持环形进度条,而环形进度条在实际中使用很是广泛,以下使用GDI+自绘具有环形效果的进度条. 其实GDI+里封装有一个函数DrawArc可以画环形进度条,但它有一个缺 ...

  6. 关于C# WinForm中进度条的实现方法

    http://www.cnblogs.com/Sue_/articles/2024932.html 进度条是一个软件人性化考虑之一,他给用户的感觉就是程序内部在不停的动作,执行到了什么程度,而不是整个 ...

  7. vue中进度条写法_vue组件实现进度条效果

    这篇文章主要为大家详细介绍了vue组件实现进度条效果,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! 本文实例为大家分享了vue实现进度条效果的具 ...

  8. php 异步进度条,PHP学习:PHP+Ajax异步带进度条上传文件实例

    <PHP学习:PHP+Ajax异步带进度条上传文件实例>要点: 本文介绍了PHP学习:PHP+Ajax异步带进度条上传文件实例,希望对您有用.如果有疑问,可以联系我们. PHP应用前端引入 ...

  9. MFC之进度条CProgressCtrl

    一.成员函数简介 1.create() 针对不是通过资源文件上拖拉进度条控件生成的进度条,需要用此函数创建一个. 2.SetRange() 设置进度条的起始值和终止值. 3.SetPos() 设置进度 ...

最新文章

  1. 数学推导+纯Python实现机器学习算法:GBDT
  2. 区别 (function($){...})(jQuery)、$(function(){ })和$.fn
  3. python Lambda 表达式
  4. python可以做力扣的题吗_力扣题目练习一
  5. JAVA生产者消费者的实现
  6. 55)函数指针和其意义
  7. Atitit 定时器在项目的应用于 servless数据库 atikvdb 目录 1.1. 项目背景 1 1.2. 特点::免驱动。简单快捷。。 1 1.3. 功能指标 1 1.4. 模块与功能实
  8. mplab java失败_【超菜鸟求助】编译时失败,以下是显示内容。
  9. Linux Linux程序练习十(网络编程大文件发送)
  10. 网络拓扑结构_全球网络拓扑测绘这样来实现
  11. 基于CANape开发之Functions(一)
  12. fw313r手机登录_fw313r路由器设置
  13. 基金账户与基金交易账户
  14. hexo博客可以在百度谷歌搜索到
  15. w7计算机虚拟内存设置,win7虚拟内存怎么设置最好
  16. 【拥塞管理】配置低延迟队列LLQ
  17. 关于T检验的各种问题
  18. U盘中毒后,文件夹被隐藏的解决方法
  19. DataGrip离线安装驱动
  20. CSU2020期中测试模拟题1 问题E:小帅的字符串

热门文章

  1. Zuul动态路由及动态Filter实现
  2. Cipher Code
  3. Java架构师必备知识体系
  4. linux服务器用lighttpd+mysql5+php5+SupeSite/X-Space+discuz构建社区门户
  5. 均值滤波,中值滤波,最大最小值滤波
  6. blender 绘制离散顶点, SMPL骨架绘制
  7. 《深入理解Java虚拟机》读书笔记六
  8. 如何在虚拟机下安装Linux
  9. 小森生活服务器维护公告,小森生活2021年5月11日停服更新公告
  10. Google BERT 中文应用之《红楼梦》中对话人物提取