模态对话框是这样的对话框,当它弹出后,本应用程序其他窗口将不再接受用户输入,
只有该对话框响应用户输入,在对它进行相应操作退出后,其他窗口才能继续与用户交互。
非模态对话框则是, 它弹出后,本程序其他窗口仍能响应用户输入。非模态对话框一
般用来显示提示信息等
step1:
根据―创建对话框模板和修改对话框属性‖中所讲的方法,在Resource View 中的―Di
alog‖上点右键选择―Insert Dialog‖,创建一个新的对话框模板,修改其ID为 IDD_TIP_DIAL
OG, Caption 改为―提示‖,然后参考―为对话框添加控件‖中所讲,在对话框模板上添加一个
静态文本框( static text),Caption改为―您确定要进行加法计算吗?‖,接下来修改 OK按钮
的 Caption 为―确定‖,Cancel 按钮的Caption为―取消‖,最后调整各个控件的位置和对话框的
大小。最终的对话框模板如下图:
step2:
.根据―创建对话框类和添加控件变量‖中创建对话框类的方法,在对话框模板上点右键
选择―Add Class...‖,弹出添加类的对话框,设置―Class name‖为CTipDlg,点―OK‖。在Sol
ution Explorer 中可以看到生成了 CTipDlg类的头文件TipDlg.h 和源文件 TipDlg.cpp。
step3:
我们要在点―计算‖按钮之后弹出此提示对话框,那么就要在―计算‖按钮的消息处理函
数 OnBnClickedAddButton()中访问提示对话框类,所以为了访问CTipDlg类,在 Addition
Dlg.cpp 中包含 CTipDlg的头文件:#include "TipDlg.h"。
step4:
修改 OnBnClickedAddButton()的函数体,在所有代码前,构造CTipDlg类的对象 tip
Dlg,并通过语句 tipDlg.DoModal();弹出对话框,最后判断DoModal()函数的返回值是IDO
K 还是 IDCANCEL 来确定是否继续进行计算。 OnBnClickedAddButton()函数修改后如下:
void CAdditionDlg::OnBnClickedAddButton()
2. {
3. // TODO: Add your control notification handler code here
4. INT_PTR nRes; // 用于保存 DoModal 函数的返回值
5.
6. CTipDlg tipDlg; // 构造对话框类 CTipDlg 的实例
7. nRes = tipDlg.DoModal(); // 弹出对话框
8. if (IDCANCEL == nRes) // 判断对话框退出后返回值是否为 IDCANC
EL,如果是则 return,否则继续向下执行
9. return;
10.
11. // 将各控件中的数据保存到相应的变量
12. UpdateData(TRUE);
13.
14. // 将被加数和加数的加和赋值给 m_editSum
15. m_editSum = m_editSummand + m_editAddend;
16.
17. // 根据各变量的值更新相应的控件。和的编辑框会显示 m_editSum 的值
18. UpdateData(FALSE);
19. }