创建UI线程并正确传递参数

UI 线程是由CWinThread派生类控制的,这个派生类和CWinApp极为类似,实际上CWinApp也是一个UI线程,他是应用程序的主线程,一般我们所说的UI线程,是指除主线程之外的界面线程。
 
具体创建方法:
1.创建一个CWinThread的派生类CUiTread2
2.在CUiTread2类的InitInstance函数中建立自己的界面,注意必须设置CWinThread类的m_pMainWnd成员,否则这 个线程不会随着界面的关闭而退出。

BOOL CMyThread::InitInstance() { // TODO: perform and per-thread initialization here CMyDlg *pDlg=new CMyDlg; pDlg->Create(IDD_GUIDLG); pDlg->ShowWindow(SW_SHOW); m_pMainWnd = pDlg; return TRUE; }


3.启动该线程:
    CWinThread *pTread=AfxBeginThread(RUNTIME_CLASS(CUiTread2));   
关于线程的退出:
当关闭窗口的时候,CWnd::OnNcDestroy会自动给线程发送WM_QUIT消息,这个时候线程会退出。


UI线程传参数标准方法

1. 给你那个线程类添加成员变量用来带参数
2. 创建线程按照下述方式进行

C/C++ code CMyThread* pThread= (CMyThread*)AfxBeginThread( RUNTIME_CLASS(CMyThread),//对应得线程类 THREAD_PRIORITY_NORMAL,//normal优先级 0,// 缺省堆栈大小 CREATE_SUSPENDED,//创建以后先暂停,这点狠重要,让你在线程启动之前设置参数 NULL ); pThread->iVal=1; pThread->szVal="this is data"; pThread->ResumeThread();

 

你可能感兴趣的:(thread,UI,null,Class,initialization)