1、首先利用VS2010建立MFC對話框應用程序命名爲MFC_Thread_Test,去掉默認的union字符集,也可以在工程建立完後修改工程屬性,改爲多字符集
2、添加對話框類成員變量
CWinThread* Thread1;//定義線程指針
CWnd* MainWnd;//定義對話框窗口指針
3、定義並實現一個類成員函數,用來封裝線程創建,這裏只封裝一個線程創建,可以創建多線程
定義:
void CreatThread();
實現:
void CMFC_Thread_TestDlg::CreatThread()
{
MainWnd=AfxGetApp()->m_pMainWnd;//獲取對話框窗口指針
Thread1=AfxBeginThread(Thread1_Process,MainWnd,0,0,CREATE_SUSPENDED,NULL);//創建線程並掛起
Thread1->ResumeThread();//喚醒線程
}
4、定義並實現線程處理函數
定義一個全局的線程處理函數:
UINT Thread1_Process(LPVOID pParam);
實現該函數
UINT Thread1_Process(LPVOID pParam)
{
CMFC_Thread_TestDlg* pMainWnd=(CMFC_Thread_TestDlg*)pParam;//通過參數獲取對話框窗口指針
pMainWnd->EditShow();//通過對話框窗口指針調用對話框類裏面的成員函數
pMainWnd->GetDlgItem(IDC_EDIT2)->SetWindowText("NO EditShow!!!");//直接調用庫函數顯示字符串
return 0;
}
5、在對話框上加兩個編輯框,ID分別爲IDC_EDIT1、IDC_EDIT2。再加兩個按鈕ID爲IDC_BUTTON1和IDC_BUTTON2。
將按鈕一名字改爲創建線程,按鈕二改爲清空顯示,雙擊按鈕一,添加處理函數,在處理函數裏面加上:
CreatThread();
雙擊按鈕二,添加處理函數,在函數裏面加上:
GetDlgItem(IDC_EDIT1)->SetWindowText("");//清空編輯框1
GetDlgItem(IDC_EDIT2)->SetWindowText("");//清空編輯框2
6、再爲對話框類添加一個成員函數
定義:
void EditShow();
實現:
void CMFC_Thread_TestDlg::EditShow();
{
GetDlgItem(IDC_EDIT1)->SetWindowText("Thread has been created!!!");//編輯框1顯示
}