MFC对话框程序添加弹窗进度条提示

1.建立主对话框和弹窗对话框

2.在主对话框添加按钮,进行主线程工作和弹窗显示。

3.主线程头文件申明线程,主线程工作函数和与弹窗交付的变量

    static UINT ThreadProcess(LPVOID p);//主工作线程
    int nNum;//主线程和弹窗交付变量
    void AddNum();//主线程工作函数

4.函数

void CTestProcessBarDlg::OnBtnStart() 
{
    // TODO: Add your control notification handler code here
    AfxBeginThread(ThreadProcess,this,THREAD_PRIORITY_NORMAL,0,0,NULL);
    CProcessDlg pDlg;
    pDlg.pNum=&nNum;
    pDlg.DoModal();
}

UINT CTestProcessBarDlg::ThreadProcess(LPVOID p)
{
    CTestProcessBarDlg *pDlg=(CTestProcessBarDlg *)p;
    pDlg->AddNum();
    return 0;
}

void CTestProcessBarDlg::AddNum()
{

       if (nNum>=100)
        {
            break;
        }
    for (int i=0;i<=101;i++)
    {
        Sleep(100);
        nNum=i;
    }
}

5.弹窗对话框添加Process控件

6.弹窗对话框头文件

int *pNum;//与主对话框交付指针变量
static UINT ThreadWinInfo(LPVOID p);//线程操作进度条

7.弹窗对话框函数

BOOL CProcessDlg::OnInitDialog() //初始化中加入线程
{
    CDialog::OnInitDialog();
    
    // TODO: Add extra initialization here
    m_Process.SetRange(0,100);
    m_Process.SetStep(2);
    AfxBeginThread(ThreadWinInfo,this);
    return TRUE;  // return TRUE unless you set the focus to a control
                  // EXCEPTION: OCX Property Pages should return FALSE
}

 UINT CProcessDlg::ThreadWinInfo(LPVOID p)
 {
     CProcessDlg *pDlg=(CProcessDlg *)p;
     while(1)
     {
         if (*pDlg->pNum==100)
         {
             break;
         }
         pDlg->m_Process.SetPos(*pDlg->pNum);
     }
     pDlg->PostMessage(WM_CLOSE);//当主线程中的变量达到100,就自动关闭弹窗对话框
    return 0;
 }

void CProcessDlg::OnOK() 
{
    // TODO: Add extra validation here
    *pNum=100;
}

 

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值