当非模态对话框显示时,运行转而执行程序中的其他任务,而不用关闭这个对话框。

图形界面操作过程和模态对话框一样,只是,非模态对话框实现方式不一样,先创建(CDialog::Create)一次,然后再显示(CWnd::ShowWindow)。

  1. 主对话框.h类中声明对话框对象:
    12 MFC - 非模态对话框_非模态对话框

  2. 创建对话框放在主对话框类的构造函数或OnCreate()函数,目的只创建一次对话框:

//主对话框构造函数
CDialogDlg::CDialogDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(CDialogDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

m_dlg.Create(IDD_DIALOG_SHOW); //IDD_DIALOG_SHOW为对话框ID
}
  1. 按钮处理函数显示对话框:
//启动非模态对话框按钮
void CDialogDlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码

m_dlg.ShowWindow(SW_SHOWNORMAL); //显示非模态对话框
}