MFC 線程的創建,線程函數在類內、類外


【線程的創建】

AfxBeginThread(類外的線程函數,NULL);

AfxBeginThread(類內的線程函數,(LPVOID)this);

【類外線程函數】

UINT 函數名(LPVOID pParam);//頭文件中聲明,放類外

UINT MyThreadA(LPVOID pParam) //cpp文件中具體實現
{

}

【類內線程函數】

static UINT 函數名(LPVOID pParam);//頭文件中聲明,放類內

UINT CMFCApplication5Dlg::MyThreadA(LPVOID pParam) //cpp文件中具體實現
{

}

【案例】IDC_OUTPUT_1——Static Text

UINT MyThreadA(LPVOID pParam)
{
    for (int i = 0; i <=100; i++)
    {
        SetDlgItemInt(AfxGetApp()->m_pMainWnd->m_hWnd, IDC_OUTPUT_1,i,false);//窗口句柄,具體控件ID
        Sleep(100);
    }
    return 0;
}
void CMFCApplication5Dlg::OnBnClickedButton1()
{
    // TODO:  在此添加控件通知處理程序代碼
    AfxBeginThread(MyThreadA,NULL);
}
 
UINT CMFCApplication5Dlg::MyThreadA(LPVOID pParam)
{
    CMFCApplication5Dlg* dlg = (CMFCApplication5Dlg*)pParam; //pParam是this for (int i = 0; i <=100; i++)
    {
        dlg->SetDlgItemInt(IDC_OUTPUT_1, i, false);
        Sleep(100);
    }
    return 0;
}
void CMFCApplication5Dlg::OnBnClickedButton1()
{
    // TODO:  在此添加控件通知處理程序代碼
    AfxBeginThread(MyThreadA, (LPVOID)this);//傳入this指針
}
 
        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM