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 }
  • 相关阅读:
    LeetCode 965. Univalued Binary Tree
    LeetCode 961. N-Repeated Element in Size 2N Array
    LeetCode 832. Flipping an Image
    语法设计——基于LL(1)文法的预测分析表法
    简单的词法设计——DFA模拟程序
    LeetCode 905. Sort Array By Parity
    LeetCode 804. Unique Morse Code Words
    【原创】用事实说话,Firefox 的性能是 Chrome 的 2 倍,Edge 的 4 倍,IE11 的 6 倍!
    【新特性速递】新增单标签页模式,界面更加清爽!
    【新特性速递】重构表格列锁定代码,只有一个横向滚动条,更加现代化!
  • 原文地址:https://www.cnblogs.com/may1016/p/5525346.html
Copyright © 2011-2022 走看看