使用MFC中的AfxBeginThread创建多线程
2013-11-14 14:40
477 查看
创建一个基于对话框的工程,工程名为CreateThreadRect
在CreateThreadRect.cpp中增加一个ThreadProc函数,代码如下
工作者线程的函数必须是全局函数或静态成员函数,不能是普通的成员函数
添加一个按钮控件IDTHREAD,该按钮事件代码如下
运行结果:
在CreateThreadRect.cpp中增加一个ThreadProc函数,代码如下
工作者线程的函数必须是全局函数或静态成员函数,不能是普通的成员函数
DWORDWINAPIThreadProc(LPVOIDpParam)
{
CDC*pdc;
//将传入的参数转为RECT*
RECT*rect=(RECT*)pParam;
//得到设备句柄
pdc=AfxGetApp()->m_pMainWnd->GetDC();
//设置画刷
CBrushbrush(HS_VERTICAL,RGB(0,255,0));
//选入到设备中
CBrush*oldbrush=pdc->SelectObject(&brush);
intn=0;
while(n++<=2000)
{
pdc->Rectangle(rect->left,rect->top,rect->right+n,rect->bottom);
Sleep(1);
}
pdc->SelectObject(oldbrush);
pdc->ReleaseOutputDC();
return0;
}
添加一个按钮控件IDTHREAD,该按钮事件代码如下
voidCCreateThreadRectDlg::OnThread()
{
//TODO:Addyourcontrolnotificationhandlercodehere
RECTrect1;
rect1.left=20;//左上角x坐标
rect1.top=100;//左上角y坐标
rect1.right=20;//右下角x坐标
rect1.bottom=rect1.top+100;//右下角y坐标
//创建第一个线程ThreadProc,相对优先级THREAD_PRIORITY_IDLE面对任何等级调整为1
AfxBeginThread((AFX_THREADPROC)ThreadProc,&rect1,THREAD_PRIORITY_IDLE);
RECTrect2;
rect2.left=rect1.left;
rect2.top=rect1.bottom+20;
rect2.right=rect1.right;
rect2.bottom=rect2.top+100;
//创建第二个线程ThreadProc,相对优先级THREAD_PRIORITY_TIME_CRITICAL
//面对任何等级调整为15,面对REALTIME等级调整为32
AfxBeginThread((AFX_THREADPROC)ThreadProc,&rect2,THREAD_PRIORITY_TIME_CRITICAL);
}
运行结果:
相关文章推荐
- js 判断文件类型 控制表单提交
- sqlserver常用函数/存储过程/数据库角色
- 跨界“抢粮食”
- poj3009
- Python 实现K-means算法
- spring mvc demo
- LINUX下磁盘IO性能测试评估与优化
- stm32f107vc在IAR环境下,引用库函数的工程文件的配置方法
- myeclipses使用基础
- Java多态的使用注意事项
- opencv调用摄像头录制视频
- iostat来对linux硬盘IO性能进行了解
- opencv调用摄像头录制视频
- flash+xml无法显示中文的解决办法
- SYSTEMTIME相关
- Response.write 之后 前台不能获取正确的返回串
- QT技术应用_2D绘图(转)
- 十八大三中全会召开,给政府互联网发展带来了新的春天
- (转) Parameter estimation for text analysis 暨LDA学习小结
- jQuery ajax跨域调用出现No Transport