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

2019-11-20  本文已影响0人  david_hmy

需求:在某个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 控件。

上一篇下一篇

猜你喜欢

热点阅读