zoukankan      html  css  js  c++  java
  • 基于对话框的编程之模态与非模态

    一、效果图

     

    二、模态对话框和非模态对话框区别

    程序运行过程中,若出现了模态对话框,则主窗口无法继续发送消息,直到模态对话框关闭;若出现了模态对话框,主窗口仍可以继续发送消息。

    三、具体实现步骤

    1、新建一个MFC应用程序,命名为01 CDialog

    2、在设置应用程序类型时,选择基于对话框的,其他默认设置

    3、运行程序,初始效果如下

    4、查看类视图,我们可以看到CMy01CDialogApp和CMy01CDialogDIg两个类,其中App类继承于CWinApp,里面的InitInstance方法是程序入口,DIg类继承于CDialogEx

    5、在资源视图里面打开对话框

    在源文件夹下有一个.rc文件,双击后就能打开资源视图,在Dialog下,找到我们要做修改的对话框IDD_MY01CDIALOG_DIALOG

    6、修改对话框的标题

    按Ctrl+A键,全选,然后按Delete键删除对话框里面的初始内容

    右键属性,修改Caption属性为对话框

    7、新增按钮

    找到工具箱,找到Button,拖拽到对话框内

    右键属性,修改按钮的名字为模态对话框

    再新增一个按钮,命名为非模态对话框,效果如下:

    8、新增对话框

    找到资源视图,Dialog右键点击Insert Dialog

    对新增的对话框右键属性,修改ID为IDD_EXEC

    添加一个按钮,命名为模态弹出了

    9、将新建对话框关联到一个类

    在对话框内的空白处右键,点击Add Class..,类名命名为CDIgExec

    10、添加点击事件(三种方法)

    • 按钮处右键属性,点击Control Events(闪电图标),找到BN_CLICKED,在下拉框中选择<Add> OnBnClickedButton1

      

      

      

    • 按钮右键选择Add Event Handler..

      

      

    • 直接双击按钮(推荐使用)

    11、编辑点击事件

    //模态对话框按钮的点击事件
    void CMy01CDialogDlg::OnBnClickedButton1()
    {
        // TODO: Add your control notification handler code here
        //弹出模态对话框
        CDlgExec dlg;
        dlg.DoModal();
    }

    将头文件包含进来

    运行效果

    12、为非模态对话框添加类(CDIgShow)和点击事件

    13、在.h文件中声明非模态对话框对象

    14、将Create事件写到OnInitDialog()事件中

    15、显示非模态对话框

    //非模态对话框按钮的点击事件
    void CMy01CDialogDlg::OnBnClickedButton2()
    {
        // TODO: Add your control notification handler code here
        //非模态对话框
        //CDlgShow dlg;
        //创建
        //dlg.Create(IDD_SHOW);//创建窗口只能创建一次,多次就会崩掉
        //显示
        dlg.ShowWindow(SW_SHOWNORMAL);
    }
  • 相关阅读:
    bzoj 1030: [JSOI2007]文本生成器
    hdu 2222 Keywords Search
    poj 2406 Power Strings
    poj 2752 Seek the Name, Seek the Fame
    ASP.NET中WebForms简介与搭建HelloWorld项目
    VisualStudio2017中新建项目没有Asp.Net项目
    C#中导出百万级Excel只需几秒除了NPOI还可以这样
    Winform中实现双击Dev的TreeList在ZedGraph中生成对应颜色的曲线
    Winform中设置ZedGraph在生成多条曲线时随机采用不同的颜色
    DevExpress的TreeList实现自定义节点NodeCell的背景颜色和前景色
  • 原文地址:https://www.cnblogs.com/yanchaoyi/p/12639276.html
Copyright © 2011-2022 走看看