VC++ 非模态对话框

来源:互联网 发布:阿里云备案幕布多少钱 编辑:程序博客网 时间:2024/05/21 18:45

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

author:fym0121@163.com

license:GPL

IDE:Visual Studio 2008


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


 一、模态对话框

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

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


3、为新加对话框添加类

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




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);}







原创粉丝点击