使用MFC中的AfxBeginThread创建多线程
生活随笔
收集整理的這篇文章主要介紹了
使用MFC中的AfxBeginThread创建多线程
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
創(chuàng)建一個(gè)基于對(duì)話框的工程,工程名為CreateThreadRect
在CreateThreadRect.cpp中增加一個(gè)ThreadProc函數(shù),代碼如下
工作者線程的函數(shù)必須是全局函數(shù)或靜態(tài)成員函數(shù),不能是普通的成員函數(shù)
DWORD WINAPI ThreadProc(LPVOID pParam)
{
CDC* pdc;
//將傳入的參數(shù)轉(zhuǎn)為RECT*
RECT* rect=(RECT*)pParam;
//得到設(shè)備句柄
pdc=AfxGetApp()->m_pMainWnd->GetDC();
//設(shè)置畫刷
CBrush brush(HS_VERTICAL,RGB(0,255,0));
//選入到設(shè)備中
CBrush* oldbrush=pdc->SelectObject(&brush);
int n=0;
while(n++<=2000)
{
pdc->Rectangle(rect->left,rect->top,rect->right+n,rect->bottom );
Sleep(1);
}
pdc->SelectObject(oldbrush);
pdc->ReleaseOutputDC();
return 0;
}
添加一個(gè)按鈕控件IDTHREAD,該按鈕事件代碼如下
void CCreateThreadRectDlg::OnThread()
{
// TODO: Add your control notification handler code here
RECT rect1;
rect1.left=20; //左上角x坐標(biāo)
rect1.top=100; //左上角y坐標(biāo)
rect1.right=20; //右下角x坐標(biāo)
rect1.bottom =rect1.top +100; //右下角y坐標(biāo)
//創(chuàng)建第一個(gè)線程ThreadProc,相對(duì)優(yōu)先級(jí)THREAD_PRIORITY_IDLE面對(duì)任何等級(jí)調(diào)整為1
AfxBeginThread((AFX_THREADPROC)ThreadProc,&rect1,THREAD_PRIORITY_IDLE);
RECT rect2;
rect2.left=rect1.left;
rect2.top=rect1.bottom +20;
rect2.right=rect1.right;
rect2.bottom =rect2.top +100;
//創(chuàng)建第二個(gè)線程ThreadProc,相對(duì)優(yōu)先級(jí)THREAD_PRIORITY_TIME_CRITICAL
//面對(duì)任何等級(jí)調(diào)整為15,面對(duì)REALTIME等級(jí)調(diào)整為32
AfxBeginThread((AFX_THREADPROC)ThreadProc,&rect2,THREAD_PRIORITY_TIME_CRITICAL);
}
運(yùn)行結(jié)果:
總結(jié)
以上是生活随笔為你收集整理的使用MFC中的AfxBeginThread创建多线程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 农行房贷提前还款新政策2022,分为以下
- 下一篇: 深入理解Three.js中透视投影照相机