使用MFC中的AfxBeginThread创建多线程
生活随笔
收集整理的這篇文章主要介紹了
使用MFC中的AfxBeginThread创建多线程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
創建一個基于對話框的工程,工程名為CreateThreadRect
在CreateThreadRect.cpp中增加一個ThreadProc函數,代碼如下
工作者線程的函數必須是全局函數或靜態成員函數,不能是普通的成員函數
DWORD WINAPI ThreadProc(LPVOID pParam)
{
CDC* pdc;
//將傳入的參數轉為RECT*
RECT* rect=(RECT*)pParam;
//得到設備句柄
pdc=AfxGetApp()->m_pMainWnd->GetDC();
//設置畫刷
CBrush brush(HS_VERTICAL,RGB(0,255,0));
//選入到設備中
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;
}
添加一個按鈕控件IDTHREAD,該按鈕事件代碼如下
void CCreateThreadRectDlg::OnThread()
{
// TODO: Add your control notification handler code here
RECT rect1;
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);
RECT rect2;
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);
}
運行結果:
總結
以上是生活随笔為你收集整理的使用MFC中的AfxBeginThread创建多线程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 农行房贷提前还款新政策2022,分为以下
- 下一篇: 深入理解Three.js中透视投影照相机