zoukankan      html  css  js  c++  java
  • MFC——对话框(二),模态对话框

    Windows对话框分为两类:模态对话框和非模态对话框。

    模块对话框,当它弹出后,本应用程序其它窗口将不再接受用户输入,只有该对话框相应用户输入后,在对它进行相应操作退出后,其它窗口才能继续与用户交互。

    非模态对话框,它弹出后,本程序其它窗口仍能相应用户输入。

    模态对话框

    首先先弄清楚主界面是如何显示出来的

    加入本解决方案名称为Addition,则新建MFC工程时,会出现一个AdditionDlg .cpp文件,该文件中会有一个InitInstance()函数,用于完成初始化工作。

    CAdditionDlg dlg;            // 定义对话框类CAdditionDlg的对象dlg   
    m_pMainWnd = &dlg;      // 将dlg设为主窗口   
    INT_PTR nResponse = dlg.DoModal();   // 弹出对话框dlg,并将DoModal函数的返回值赋给nResponse   
    if (nResponse == IDOK)               // 判断返回值是否为OK按钮
    {   
        // TODO: Place code here to handle when the dialog is   
        //  dismissed with OK   
    }   
    else if (nResponse == IDCANCEL)      // 判断返回值是否为Cancel按钮
    {   
        // TODO: Place code here to handle when the dialog is   
        //  dismissed with Cancel   
    }  

    从上述代码可以看到,首先定义一个对话框类的对象,然后将其首地址赋予m_pMainWnd,即设定主窗口

    然后就是弹出对话框了,弹出对话框比较关键的一个函数,就是对话框类的DoModal()函数

    CDialog::DoModal()函数的原型为:virtual INT_PTR DoModal(); 

    返回值:整数值,指定了传递给CDialog::EndDialog(该函数用于关闭对话框)的nResult参数值。如果函数不能创建对话框,则返回-1;如果出现其它错误,则返回IDABORT。

    因此,可通过判断DoModal()函数的返回值,来判断按的是拿一个按钮,

    比如,如果按的是OK按钮(OK按钮的消息处理函数OnBnClickedOk()中是CDialogEx::OnOK()函数),即

    1 void CTipDlg::OnBnClickedOk()
    2 {
    3     // TODO: 在此添加控件通知处理程序代码
    4     CDialogEx::OnOK();
    5 }

    而CDialogEx::OnOK()函数的返回值就是IDOK

    至于OK按钮的消息处理函数名OnBnClickedOk的来源,可以参考下图,一目了然,

    同理,如果是Cancel按钮,同样会有

    1 void CTipDlg::OnBnClickedCancel()
    2 {
    3     // TODO: 在此添加控件通知处理程序代码
    4     CDialogEx::OnCancel();
    5 }
  • 相关阅读:
    Typora+PicGo图片上传教程
    创建一个springbootcloud项目
    plugin.xml 解析说明
    Java 元注解 使用示例
    Spring 注解学习 使用示例
    springboot2.2 集成 activity6 请假完整示例
    SpringBoot 过滤器,拦截器初步学习整理(有示例代码)
    mybatis plus mysql 代码生成器 示例demo
    Bootstrap相关方法,事件整理
    网站链接
  • 原文地址:https://www.cnblogs.com/may1016/p/5525346.html
Copyright © 2011-2022 走看看