美文网首页
MFC非模态对话框提示等待的实现

MFC非模态对话框提示等待的实现

作者: david_hmy | 来源:发表于2019-11-20 15:09 被阅读0次

    需求:在某个button响应中,可能会执行一段耗时较长的函数,在调用这个函数的过程中,为了提示用户当前程序正在执行而不是死机,需要弹框让用户知道。并且当该函数执行完成后,提示对话框关闭。

    解决:网上有很多问这个问题和解决这个问题的,但是都不直接和明确。首先我不需要多线程实现,我只是弹出一个提示框,不需要这个对话框做进度动画,一个静态的提醒就够了。其次,静态实现的解答中,遇到了弹出对话框是空白,没有响应的控件的问题。

    这里贴出真正能够解决的方案:

    // 1.非模态对话框创建和显示

    CDialog dlg;

    dlg.Create(IDD_DIALOG1); //IDD_DIALOG_SHOW为创建的要弹出的对话框

    dlg.CenterWindow(this);    //对话框居中显示

    dlg.SetDlgItemText(IDC_WAIT, "Alg running, please Wait..........");

    dlg.ShowWindow(SW_SHOWNOACTIVATE);

    dlg.UpdateWindow(); // 这个最重要,不执行控件无法显示

    // 2.自己比较耗时的函数调用

    // here call your own long-time process

    // 3.关闭对话框

    dlg.EndDialog(0);//处理完,关闭对话框

    注:其中,IDD_DIALOG1为自己新插入的一个对话框:

    IDC_WAIT为新建对话框中的一个static 控件。

    相关文章

      网友评论

          本文标题:MFC非模态对话框提示等待的实现

          本文链接:https://www.haomeiwen.com/subject/uauoictx.html