MFC多线程对话框显示进度和状态
来源:互联网 发布:宿州淘宝xinsuzhou 编辑:程序博客网 时间:2024/06/03 13:19
如,我要将一些当前程序的数据打印为PDF,这个过程需要一段时间,需要设置进度条,可以选择一个弹窗式的进度条。
建立共享变量
int m_process;//进度条进度,0-100
CString m_status;//当前程序状态输出文本
首先,创建一个对话框,并建立与其对应的类CJingDuTiao,添加一个进度条控件绑定m_ctrlProgress, 添加一个static用于输出文本。对话框CPP顶端共享上述两个变量
然后在对话框对应的类中添加两个函数:
void CJingDuTiao::OnTimer(UINT nIDEvent)
{
{
OnOK();
}
else if(m_process!=0)
{
m_progress.SetPos(m_process);
if (((CStatic*)GetDlgItem(IDC_STATUS))->GetSafeHwnd())
{
CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATUS);
ASSERT(pStatic);
CRect rc;
pStatic->GetWindowRect(&rc);
ScreenToClient(&rc);
InvalidateRect(&rc);
}
SetDlgItemText(IDC_STATUS,m_status);
}
CDialogEx::OnTimer(nIDEvent);
}
BOOL CJingDuTiao::OnInitDialog(){
CDialogEx::OnInitDialog();
// TODO: 在此添加额外的初始化
KillTimer(1);
SetTimer(1,20,NULL);
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
再在主程序(MainFrm)中添加两个子进程需要处理的函数,注意要在.h中USING namespace std后声明UINT PrintPdf_thread(LPVOID pParam);
如:
void C单腔模拟View::PrintPdf(int print_pic_each,int print_pic_all, int print_sheet, int print_property)
{
{
{
for(int i = 0; i < 1000; i++)
{
m_process++;
Sleep(50);
}
m_process = 100;
return 0;
}
这个函数(function)是用来控制进度条变化的函数。
UINT PrintPdf_thread(LPVOID pParam)
{
C单腔模拟View* pInfo2=(C单腔模拟View*)pParam;pInfo2->PrintPdf(print_pic_each,print_pic_all,print_sheet,print_property);
return 0;
}
最后在需要运动进度条的地方添加
AfxBeginThread(PrintPdf_thread,this);//申请一个进程来执行function1,也就是主程序处理代码。
if(dlg1.DoModal()==IDOK)//模态显示对话框,此时主程序代码执行到此,不往下执行,直至对话框关闭,但是两个
{
需等待print结束之后运行的代码
}
//子进程始终在运行中。
其中dlg1是对话框的一个对象。
这样一个同事处理数据且显示进度条对话框的功能就实现了。
0 0
- MFC多线程对话框显示进度和状态
- 网页浏览控件WebView和显示进度的对话框ProgressDialog
- 1.5 显示进度对话框---ProgressDialog
- MFC对话框的创建和显示
- MFC+多线程+对话框+进度条
- 用多线程解决进度显示
- 多线程复制文件显示进度
- MFC对话框显示图片
- MFC 对话框全屏显示
- MFC对话框显示图片
- mfc view显示对话框
- MFC对话框显示图片
- 【MFC】MFC 对话框显示菜单栏
- 一个多线程的进度对话框源代码
- 【Android 开发教程】显示进度对话框
- Android程序设计:显示后台任务进度对话框
- 1.6 显示进度操作的对话框
- MFC 让对话框不显示在任务栏和桌面
- flask成长记(一)
- 导航及悬浮层制作模板与技巧
- 一些链接
- Redis入门
- Tomcat7.0/8.0 详细安装配置图解,以及UTF-8编码配置
- MFC多线程对话框显示进度和状态
- Java基础知识(面试笔试)
- ubuntu系统下安装配置mysql
- 随笔 3. 回国过年了,暂停更新博客(至2月13日)
- android MVX杂谈
- 小程序的下拉刷新与上划加载
- 关于C#上位机的usb_hid通信相关问题说明
- Think in Java笔记
- ibatis 动态查询sql报错'xx can not found'