继承CWinThread创建UI线程

     我们经常在UI线程里面创建一些worker线程来执行一些复杂而冗长的计算任务,也可以创建一个UI线程,比如在点击一个按钮后弹出一个对话框,也可以用一个线程来执行。

    只需要继承CWinThread就行了,并重载2个函数:virtual BOOL InitInstance();    virtual int ExitInstance();/

代码如下:

  1. class CUIThread : public CWinThread
  2. {
  3.     DECLARE_DYNCREATE(CUIThread)
  4. protected:
  5.     CUIThread();           // protected constructor used by dynamic creation
  6. // Attributes
  7. public:
  8. // Operations
  9. public:
  10. // Overrides
  11.     // ClassWizard generated virtual function overrides
  12.     //{{AFX_VIRTUAL(CUIThread)
  13.     public:
  14.     virtual BOOL InitInstance();
  15.     virtual int ExitInstance();
  16.     //}}AFX_VIRTUAL
  17. // Implementation
  18. protected:
  19.     CUIThreadDlg m_dlg;
  20.     virtual ~CUIThread();
  21.     // Generated message map functions
  22.     //{{AFX_MSG(CUIThread)
  23.         // NOTE - the ClassWizard will add and remove member functions here.
  24.     //}}AFX_MSG
  25.     DECLARE_MESSAGE_MAP()
  26. };
  27. IMPLEMENT_DYNCREATE(CUIThread, CWinThread)
  28. CUIThread::CUIThread()
  29. {
  30. }
  31. CUIThread::~CUIThread()
  32. {
  33. }
  34. BOOL CUIThread::InitInstance()
  35. {
  36.     m_dlg.Create(IDD_UITHREADDLG);
  37.     m_dlg.ShowWindow(SW_SHOW);
  38.     m_pMainWnd=&m_dlg;
  39.     return TRUE;
  40. }
  41. int CUIThread::ExitInstance()
  42. {
  43.     m_dlg.DestroyWindow();
  44.     return CWinThread::ExitInstance();
  45. }
  46. BEGIN_MESSAGE_MAP(CUIThread, CWinThread)
  47.     //{{AFX_MSG_MAP(CUIThread)
  48.         // NOTE - the ClassWizard will add and remove mapping macros here.
  49.     //}}AFX_MSG_MAP
  50. END_MESSAGE_MAP()
  51. /
  52. // CUIThread message handlers

    调用:CWinThread *pThread=AfxBeginThread(RUNTIME_CLASS(CUIThread));

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值