欢迎来到天天文库
浏览记录
ID:22191669
大小:482.50 KB
页数:6页
时间:2018-10-27
《使用vc的mfc开发线程》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、使用VC的MFC开发线程1、创建一个基于对话框的VC程序,项目名称为VCThread2、在对话框中加入三个按钮和一个进度条,如图,三个按钮的ID从左到右分别设置为:(IDC_BUTTON_NOTHREAD、IDC_BUTTON_THREAD、IDC_BUTTON_TEST);3、选中进度条,按Crtl+W在MFCClassWizard中的MemberVariables选项卡下为进度条绑定一个变量m_progress,如图:双击IDC_PROGRESS1选项,添加变量m_progress;确定:1、为测试按钮建立消息处理(在对话框的设置
2、图中双击对应按钮即可)如图:在编辑视图中双击相应按钮,出现如下对话框,单击OK确定,即可对按钮相应消息处理进行编辑;注:有颜色字为输入的代码.voidCVCThreadDlg::OnButtonTest(){//TODO:AddyourcontrolnotificationhandlercodehereMessageBox("ClickTest!");//显示一个消息框}2、为“不使用线程”的按钮建立消息处理voidCVCThreadDlg::OnButtonNothread(){//TODO:Addyourcontrolnotifi
3、cationhandlercodeherem_progress.SetRange(0,1000);//设置进度条的范围为0-1000m_progress.SetPos(0);//将进度置为0inti=0;//计数器while(i<1000){for(intj=0;j<10000;j++)for(intk=0;k<100;k++);//耗费处理机资源,注意该行的分号,k<100m_progress.SetPos(++i);//i加1,同时设置新的进度位置}}1、建立线程类,从CwinThread派生出来:a、选择菜单insert->ne
4、wclass,建立CtestThread新的线程类,注意Baseclass的选择,应选为CwinThread类;b、为CTestThread添加一个指向进度条的指针m_pProgress:在WorkSpace区域中选择ClassView选项卡,展开VCThreadclasses树并右击CTestThread,选择AddMemberVariable…c、在ClassView视图中为CTestThread添加一个新的构造函数(因原来的构造函数为私有的,所以要创建一个public的)建立的构造函数中的参数pProgress中为了接收对话框中
5、的进度条a、在新的构造函数中添加代码CTestThread::CTestThread(CProgressCtrl*pProgress){m_pProgress=pProgress;}b、为CTestThread添加虚拟函数Run(),这是线程类的主函数注意选择AddVirtualFunction而不是AddMemberFunctiona、为RUN添加代码(在WorkSpace区域FileView选项卡中双际TestThread.cpp文件即可编辑)intCTestThread::Run(){//TODO:Addyourspeciali
6、zedcodehereand/orcallthebaseclassm_pProgress->SetRange(0,1000);//与前一程序类似,区别是m_pProgress是//指向对话框中m_progress的指针,所以要用->符号访问其成员函数m_pProgress->SetPos(0);inti=0;while(i<1000){for(intj=0;j<10000;j++)for(intk=0;k<1000;k++);//注意k<1000;耗时更长m_pProgress->SetPos(i++);}returnCWinThre
7、ad::Run();//线程结束}1、为对话框中的“使用线程”的按钮建立消息处理#include"TestThread.h"//包含刚建立的新的线程类voidCVCThreadDlg::OnButtonThread(){//TODO:AddyourcontrolnotificationhandlercodehereCTestThread*MyThread=newCTestThread(&m_progress);//定义一个指向新线程类的指针,同时用new创建一个新线程的对象,将其地址存于MyThread指针中if(MyThread)/
8、/数据是否创建新的对象{MyThread->m_bAutoDelete=true;//新创建的线程对象中的成员变量设置为true,设置线程结束自动删除对象MyThread->CreateThread();//具体创建线程
此文档下载收益归作者所有