模态对话框与非模态对话框

对话框分别模态对话框与非模态对话框

模态对话框:在该对话框显示的时候,其父窗口将暂时失效,只有在该对话框关闭以后,控件权才会交还给父窗口

非模态对话框:该窗口显示的时候,父窗口依然可以操作

对话框创建的步骤(模态对话框非模态对话框均适用):

(1)添加一个新的对话框资源并用对话框编辑器对其进行设计

这里我在资源视图中插入了一个对话框资源,并添加了一些控件,用来实现一个简单整数加法器

(2)通过类向导对对话框资源绑定一个从CDialog派生的对话框类

具体做法:在对话框资源上单击鼠标右键选择添加类,绑定完成的类如下:

 

(3)适用类向导为对话框类加入与控件相关联的成员变量

在各个编辑框控件上分别单击鼠标右键选择添加变量,这里类型我都设置为了数值型,设置成控件类型也是可以的

(4)在对话框类中添加需要的消息处理函数

为相加按钮添加响应响应

 1 void CMyDlg::OnBnClickedBtnAdd()
 2 {
 3     //将对话框上显示的数值更新到绑定的变量中
 4     UpdateData(TRUE);
 5 
 6     m_nNumSum = m_nNum1 + m_nNum2;
 7 
 8     //将绑定的变量的数值更新到对话框上
 9     UpdateData(FALSE);
10 }

(5)创建并显示对话框

模态与非模态对话框前面4步基本相同,最后创建这一步稍微有点区别

这里添加两个菜单项,一个用于创建模态对话框,一个用于生成非模态对话框

接着添加两个菜单项的消息响应

用于创建模态对话框的消息响应函数如下:

1 void CMainFrame::OnModel()
2 {
3     CMyDlg theMyDlg;    //定义一个对话框对象
4     theMyDlg.DoModal(); //弹出模态对话框
5 }

用于创建非模态对话框的消息响应函数如下:

首先需要在框架类中添加一个CMyDlg类的成员变量m_MyDlg

1 void CMainFrame::OnModelless()
2 {
3     if (!m_MyDlg.m_hWnd)
4     {
5         m_MyDlg.Create(IDD_DIALOG1);   //创建非模态对话框
6     }
7     m_MyDlg.ShowWindow(SW_SHOW);       //显示非模态对话框
8 }

编译运行的效果如下:

posted @ 2015-03-24 18:34  (安于此生)  阅读(841)  评论(0编辑  收藏  举报