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显示
}