MFC线程创建以及利用线程显示字符

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

}


你可能感兴趣的:(多线程,mfc)