zoukankan      html  css  js  c++  java
  • 用 MFC 类库编程实现工作者线程

    特别注意:本例只是说明线程的使用方法。但不要在工作线程中访问UI,用发消息的形式,否则可能会发生未定义的行为   

     建立一个基于对话框的工程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;
    };

    线程函数的声明:UINT ThreadFunc(LPVOID lpParam);

    注意,二者应在类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;
    }





  • 相关阅读:
    归并排序(Merge Sort)
    AtCoder AGC035D Add and Remove (状压DP)
    AtCoder AGC034D Manhattan Max Matching (费用流)
    AtCoder AGC033F Adding Edges (图论)
    AtCoder AGC031F Walk on Graph (图论、数论)
    AtCoder AGC031E Snuke the Phantom Thief (费用流)
    AtCoder AGC029F Construction of a Tree (二分图匹配)
    AtCoder AGC029E Wandering TKHS
    AtCoder AGC039F Min Product Sum (容斥原理、组合计数、DP)
    AtCoder AGC035E Develop (DP、图论、计数)
  • 原文地址:https://www.cnblogs.com/chuanzifan/p/2265678.html
Copyright © 2011-2022 走看看