用 MFC 类库编程实现工作者线程

本文介绍了一个使用MFC实现的多线程应用示例,通过对话框、编辑框、按钮及进度条控件展示如何创建并控制一个后台线程来更新UI组件的状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1.   建立一个基于对话框的工程MultiThread5,在对话框IDD_MULTITHREAD5_DIALOG中加入一个编辑框IDC_MILLISECOND,一个按钮IDC_START,标题
      为“开始”
      ,一个进度条IDC_PROGRESS1;
      打开ClassWizard,为编辑框IDC_MILLISECOND添加int型变量m_nMilliSecond,为进度条IDC_PROGRESS1添加CProgressCtrl型变量
      m_ctrlProgress;
      在MultiThread5Dlg.h文件中添加一个结构的定义: struct threadInfo
      {
      UINT nMilliSecond;
      CProgressCtrl* pctrlProgress;
      };
  2.    线程函数的声明:UINT ThreadFunc(LPVOID lpParam);
  3.  注意,二者应在类CMultiThread5Dlg的外部。
      在类CMultiThread5Dlg内部添加protected型变量:
      CWinThread* pThread;
      在MultiThread5Dlg.cpp文件中进行如下操作:定义公共变量:threadInfo Info;
      双击按钮IDC_START,添加相应消息处理函数:
      void CMultiThread5Dlg::OnStart()
      {
      // TODO: Add your control notification handler code here
      UpdateData(TRUE);
      Info.nMilliSecond=m_nMilliSecond;
      Info.pctrlProgress=&m_ctrlProgress;
      pThread=AfxBeginThread(ThreadFunc,
      &Info);
      }
      在函数BOOL CMultiThread3Dlg::OnInitDialog()中添加语句: {
      ……
      // TODO: Add extra initialization here
      m_ctrlProgress.SetRange(0,99);
      m_nMilliSecond=10;
      UpdateData(FALSE);
      return TRUE; // return TRUE unless you set the focus to a control
      }
      添加线程处理函数: UINT ThreadFunc(LPVOID lpParam)
      {
      threadInfo* pInfo=(threadInfo*)lpParam;
      for(int i=0;i<100;i++)
      {
      int nTemp=pInfo->nMilliSecond;
      pInfo->pctrlProgress->SetPos(i);
      Sleep(nTemp);
      }
      return 0;
      }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值