添加模式对话框

对话框主要有两类:模式和无模式。

区别:在清除对话框之前,模式对话框使它所属的窗口(它的所有者)一直处于无效状态;无模式对话框则在其显示时,它的所有者也能被激活。

     显示模式对话框需要调用CDialog::DoModal,而无模式调用CDialog::Create。DoModal要等到对话框被清除后才返回。无模式则一旦建立对话框,Create就返回,因此Create返回时对话框还处于显示状态

    清除无模式对话框要调用DestroyWindow,模式调用EndDialog,禁止对无模式对话框调用CDialog::OnOk或CDialog::OnCancel,因为两者都调用EndDialog

    模式对话框类通常在栈上实例化,所以析构函数是自动实现的,而无模式对话框通过new实例化,所以该对话框对象不会过早被清除。如果要确保清除对话框时删除无模式对话框对象,一种方法是在派生的对话框类中覆盖CDialog::PostNoDestroy 并执行delete this 语句。 

     等等

现只针对模式对话框的调用:

1、创建一个对话框模板,描述对话框和其中的控件,即 如果是基于对话框的工程,就插入一个对话框。

2、构造一个CDialog对象,并封装该对话框模板,即 在新插入的对话框上添加新Class。

3.调用CDialog::DoModal显示对话框。

4、关闭对话框,只需在新建窗口调用 OnOK() or OnCancel() 即可。

例子:

void CMainDlg::EXXX()     //主窗口语句

{

    NewDlg  m_newDlg;     //newDlg 为新建窗口类

    m_newDlg.DoMoDal;

}

原文地址:https://www.cnblogs.com/LouMengzhao/p/6039675.html