模态对话框 DoModal的用法 (vs2008)与非模态对话框
Windows对话框分为两类:模态对话框和非模态对话框。
模态对话框,当它弹出后,本应用程序其他窗口将不再接受用户输入,只有该对话框响应用户输入,在对它进行相应操作退出后,其他窗口才能继续与用户交互。
非模态对话框,它弹出后,本程序其他窗口仍能响应用户输入。非模态对话框一般用来显示提示信息等。
弹出模态对话框
弹出对话框比较关键的一个函数,就是对话框类的DoModal()函数。CDialog::DoModal()函数的原型为:
virtual INT_PTR DoModal();
DoModal是一个函数,可以用来显示一个模态对话框。此成员函数用来显示一个模态对话框。其返回值对应于用来关闭对话框的控件的ID。 此函数返回后,Windows响应这个对话框,所有的属性页都会被销毁。要显示一个非模态对话框,请调用Create来代替此函数。
返回值:如果函数成功则返回IDOK或IDCANCEL;否则返回0或-1。IDOK和IDCANCEL都是常量,它表明用户选择的是OK按钮还是Cancel按钮。
调用了它对话框就会弹出,返回值是退出对话框时所点的按钮的ID,比如,我们点了“退出”按钮,那么DoModal返回值为IDCANCEL。
代码:
首先新建一个dialog,取名为TipDlg,并对该对话框添加新类
1 void CTestDlg::OnBnClickedBtnAdd() 2 { 3 // TODO: 在此添加控件通知处理程序代码、 4 5 ////////////////////////////////////////// 6 INT_PTR nRes; //用于保存DoModal函数的返回值 7 8 CTipDlg tipDlg; //构造对话框CTipDlg的实例 9 nRes=tipDlg.DoModal(); //弹出对话框 10 if(IDCANCEL==nRes) //判断对话框退出后返回值是否为IDCANCEL,如果是证明选择了退出键返回IDCANCEL,则执行return,否则继续向下执行 11 return; 12 /*要执行的代码*/ 13 }
非模态对话框的创建:http://www.jizhuomi.com/software/162.html
CDialog7为新建的对划框类
CDialog7 *dlg7=new CDialog7; //创建非模态对话框实例
dlg7->Create(IDD_DIALOG7,this);
dlg7->ShowWindow(SW_SHOW); //显示非模态对话框*/