创建简单的多线程程序
#1?牐牼咛宀街枞缦拢?
?牐?1. 在Visual C++中新建一个工程,假设工程名为Thread,工程类型为MFC Application?焑xe?牎T凇癆ppWizard:step 1”中选择单文档,其余按默认设置。
?牐?2. 使用资源编辑器在应用程序的IDR_MAINFRAME菜单中增加一个菜单Thread,其下增加一个菜单项,ID号为:ID_ThreadBegin,标题为thread begin。
?牐?3. 使用Class Wizard 增加ID_ThreadBegin的消息处理函数,OnThreadBegin(),其中Class name框中应该选择CthreadView。编辑代码如下:
?牐爒oid CThreadView::OnThreadBegin()
?牐爗
?牐?// TODO; Add your command handler code here
?牐燞WND myWnd=GetSafeHwnd();
?牐燗fxBeginThread(myThread,myWnd);??//创建一个新的线程
?牐?//myThread为线程控制函数的名称。 用来模拟秒表的指针。
?牐爙
?牐?4. 编辑线程控制函数(全局函数),将它放在OnThreadBegin()的前面,代码如下:
?牐燯INT myThread?烲PVOID param??
?牐爗??
?牐爄nt i=0;
?牐燿ouble r,arc;//表针长度及一次行走的角度
?牐爎=50.0;
?牐燼rc=2*3.14/60;
?牐爄nt x,y;??//圆心坐标
?牐爔=count*100+50;
?牐爕=100;
?牐燾ount++;??//线程数
?牐燙ClientDC mydc(((CFrameWnd*)(AfxGetApp()->m_pMainWnd))->GetActiveView());??
?牐?//构造一个CDC对象
?牐爁or(;;)
?牐爗??
?牐爉ydc.SetROP2(R2_NOT);//设置模式
?牐爉ydc.MoveTo(x,y);??
?牐爉ydc.LineTo(int(x+r*sin(i*arc)),int(y+r*cos(i*arc)));??//划线
?牐爄++;
?牐爄f(i==60)i=0;??
?牐?::Sleep(20);?犙邮?
?牐牓爙
?牐爎eturn 0;
?牐爙
?牐犠⒁猓盒枰赥hreadView.cpp头部包含头文件“math.h”;并定义一个全局变量count;
?牐?5. 编译执行,多次执行菜单Thread中的Thread begin命令,运行效果如图。