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

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

[cpp]  view plain copy
  1.     BOOL CMyThread::InitInstance()  
  2. {  
  3.  // TODO:  perform and per-thread initialization here  
  4.  CMyDlg *pDlg=new CMyDlg;  
  5.  pDlg->Create(IDD_GUIDLG);  
  6.  pDlg->ShowWindow(SW_SHOW);  
  7.  m_pMainWnd = pDlg;  
  8.  return TRUE;  
  9. }   


3.启动该线程:
    

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


UI线程传参数标准方法

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

[cpp]  view plain copy
  1. C/C++ code   
  2. CMyThread* pThread= (CMyThread*)AfxBeginThread(   
  3.   RUNTIME_CLASS(CMyThread),//对应得线程类    
  4.   THREAD_PRIORITY_NORMAL,//normal优先级  
  5.   0,// 缺省堆栈大小    
  6.   CREATE_SUSPENDED,//创建以后先暂停,这点狠重要,让你在线程启动之前设置参数    
  7.   NULL   
  8. );   
  9. pThread->iVal=1;   
  10. pThread->szVal="this is data";   
  11. pThread->ResumeThread();    

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值