MFC中进度条的学习
缘起
作为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中进度条的学习相关推荐
- MFC中进度条控件的使用方法
进度条控件是程序开发中基础控件之一,常用于显示程序的进度.在进行程序安装.文件传输时经常用到.其用法也比较简单固定. 转自:http://jingyan.baidu.com/article/95c9d ...
- Android中进度条控件使用
android中进度条控件使用 ProgressBar pb = findViewById(R.id.pb);pb.setMax(100);pb.setProgress(33); 转载于:https: ...
- MFC创建处理中进度条,循环滚动进度条的方法
创建一个不显示实际进度的循环滚动进度条,类似于Windows XP启动界面的进度条 新建一个MFC项目TestProgress,编辑界面,添加一个进度条,两个按钮,实现点击start进度条循环滚动,点 ...
- SegeX Progress:MFC通用进度条
----哆啦刘小洋 原创,转载需说明出处 MFC高级通用进度条-目录 1 简介 2 进度条实现基本原理 3 使用方法 3 .1 简单情况 3.2 两个前后独立的进度条 3.3 实际应用的一般情况 3. ...
- MFC环形进度条实现
MFC只支持横/竖条形进度条,并不支持环形进度条,而环形进度条在实际中使用很是广泛,以下使用GDI+自绘具有环形效果的进度条. 其实GDI+里封装有一个函数DrawArc可以画环形进度条,但它有一个缺 ...
- 关于C# WinForm中进度条的实现方法
http://www.cnblogs.com/Sue_/articles/2024932.html 进度条是一个软件人性化考虑之一,他给用户的感觉就是程序内部在不停的动作,执行到了什么程度,而不是整个 ...
- vue中进度条写法_vue组件实现进度条效果
这篇文章主要为大家详细介绍了vue组件实现进度条效果,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! 本文实例为大家分享了vue实现进度条效果的具 ...
- php 异步进度条,PHP学习:PHP+Ajax异步带进度条上传文件实例
<PHP学习:PHP+Ajax异步带进度条上传文件实例>要点: 本文介绍了PHP学习:PHP+Ajax异步带进度条上传文件实例,希望对您有用.如果有疑问,可以联系我们. PHP应用前端引入 ...
- MFC之进度条CProgressCtrl
一.成员函数简介 1.create() 针对不是通过资源文件上拖拉进度条控件生成的进度条,需要用此函数创建一个. 2.SetRange() 设置进度条的起始值和终止值. 3.SetPos() 设置进度 ...
最新文章
- 数学推导+纯Python实现机器学习算法:GBDT
- 区别 (function($){...})(jQuery)、$(function(){ })和$.fn
- python Lambda 表达式
- python可以做力扣的题吗_力扣题目练习一
- JAVA生产者消费者的实现
- 55)函数指针和其意义
- Atitit 定时器在项目的应用于 servless数据库 atikvdb 目录 1.1. 项目背景	1 1.2. 特点::免驱动。简单快捷。。	1 1.3. 功能指标	1 1.4. 模块与功能实
- mplab java失败_【超菜鸟求助】编译时失败,以下是显示内容。
- Linux Linux程序练习十(网络编程大文件发送)
- 网络拓扑结构_全球网络拓扑测绘这样来实现
- 基于CANape开发之Functions(一)
- fw313r手机登录_fw313r路由器设置
- 基金账户与基金交易账户
- hexo博客可以在百度谷歌搜索到
- w7计算机虚拟内存设置,win7虚拟内存怎么设置最好
- 【拥塞管理】配置低延迟队列LLQ
- 关于T检验的各种问题
- U盘中毒后,文件夹被隐藏的解决方法
- DataGrip离线安装驱动
- CSU2020期中测试模拟题1 问题E:小帅的字符串