VC++ 非模态对话框

声明:本人一个菜鸟,网上搜罗了很多关于VC++编程的资料,可每本资料都是涵盖面太广,难以细致。英语又太烂,所以不得意只得摸索,恐又忘记所以记在此处,若有不对的地方,烦劳指出,不胜感激。

author:[email protected]

license:GPL

IDE:Visual Studio 2008

VC++ 非模态对话框_第1张图片

内容:点击dlg的Model,可以产生一个模态对话框;当点击Modelless可以产生一个非模态对话框


 一、模态对话框

1、新建一个基于对话框的应用程序dlg,参考http://blog.csdn.net/fym0121/article/details/7491192,然后,向上面添加两个按钮,命名为Model和Modelless

2、在资源视图下,展开项目,右键Dialog --> 插入Dialog,会发现插入了一个对话框,默认ID是IDD_DIALOG1。对它略做修改,如上图SubDlg所示

VC++ 非模态对话框_第2张图片

3、为新加对话框添加类

    在资源视图中,双击SubDlg的空白地方,会出现MFC类向导,类名我们输入CAliceDlg,这样我们就为这个新建的对话框关联了一个类。在类视图中,你会发现多了一个CAliceDlg


VC++ 非模态对话框_第3张图片


4、在资源视图中,双击IDD_DLG_DIALOG,会看见dlg对话框,双击Model按钮,为其添加事件处理程序

void CdlgDlg::OnBnClickedButton1()
{
    CAliceDlg alice;       //注意头文件
    alice.DoModal();    //模态对话框,程序流程会停留在此处,直至对话框销毁
}

二、非模态对话框

1、在资源视图中,双击IDD_DLG_DIALOG,会看见dlg对话框,双击Modelless按钮,为其添加事件处理程序

void CdlgDlg::OnBnClickedButton2()
{
        CAliceDlg *alice = new CAliceDlg();    //此处,不能使用CAliceDlg alice;因为当这个函数执行完后,局部变量会被销毁
        alice->Create(IDD_DIALOG1);
        alice->ShowWindow(SW_SHOWNORMAL);
}







你可能感兴趣的:(编程,mfc,dialog,vc++)