我是靠谱客的博主 谨慎哑铃,最近开发中收集的这篇文章主要介绍MFC创建线程(工作线程和界面线程),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

线程分工作线程和界面线程    ,MFC对线程的封装是由CWinThread类实现的。

一.工作线程的创建:

CWinThread* pThread =AfxBeginThread(WorkThreadFunction,this,THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED,NULL);

            /  其中WorkThreadFunction为线程函数,而在界面线程创建中第一参数为 CThreadApp(自定义的界面线程类)。    this为创建的线程函数需要的参数,这里传入的是主窗口对象的指针。  函数返回值是新创建的线程对象指针(即 pThread 指向新创建的线程)


 m_ThreadList.SetAt(pThread->m_hThread,pThread);          //m_hThread 为线程对象关联的线程句柄,将线程对象及其句柄放入容器里


 pThread->ResumeThread();        

 

二,界面线程的创建:这里在主窗口中设置一个创建按钮,在按钮函数里创建一个界面线程,在这个界面线程函数里在弹出一个自定义的对话框

 

1,在资源视图中添加一个对话框资源,用于界面线程创建后的窗口显示。

 

 

然后为新建的对话框添加类 名为CBookInfo,        继承于  class CBookInfo : public CDialogEx

 

2.从CThreadApp类派生一个子类 CThreadApp (界面线程类) ,在这个子类的InitInstance()中,实例化一个步骤1创建的对话框类

BOOL CThreadApp::InitInstance()
{
   // TODO: 在此执行任意逐线程初始化
     CBookInfo dlg;
    //m_pMainWnd = &dlg;
    dlg.DoModal ();

 return TRUE;
}

3.在主对话框中定义个CMapPtrToPtr对象 m_ThreadList  ,这个容器用于线程的退出时的管理

4.通过按钮创建界面线程。

 

  void Cmfc_ThreadCreatDlg::OnBnClickedButtonInterface()
  {
   // TODO: 在此添加控件通知处理程序代码

   CWinThread* pThread = AfxBeginThread(RUNTIME_CLASS(CThreadApp),THREAD_PRIORITY_NORMAL,0,0,NULL);

       // 其中RUNTIME_CLASS(CThreadApp)为界面线程类, 函数返回一个创建好的界面线程对象,并赋给pThread ,    (在创建这个对象的初始化中,会弹出窗口)             

   m_ThreadList.SetAt(pThread->m_hThread,pThread);

  }

 

 

 

 

 

  

最后

以上就是谨慎哑铃为你收集整理的MFC创建线程(工作线程和界面线程)的全部内容,希望文章能够帮你解决MFC创建线程(工作线程和界面线程)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(70)

评论列表共有 0 条评论

立即
投稿
返回
顶部