cfnr.net
当前位置:首页 >> 在VC++中模态对话框与非模态对话框的区别? >>

在VC++中模态对话框与非模态对话框的区别?

如果是模态的,那么弹出后该程序的其它窗口就呈不可用的状态,原来程序暂停执行,直到这个模态窗口关闭后才回到原来程序继续。 非模态的就是直接显示出来,然后原来的程序继续执行下面的语句,而且其它窗口也呈可用状态。

word中的“另存为”对话框就是模态对话框,你不把它关闭,不能进行其他操作。 word中的“查找与替换”对话框就是非模态对话框,你不把它关闭,能进行其他操作。

模态对话框工作状态:当它获得焦点时,将垄断用户的输入,在完成本对话框之前,用户无法对本程序的其他部分进行操作。 非模态对话框类似于WORD里的查找替换,就在应用程序打开非模态对话框的同时还可以切换到其他窗口进行操作。 二者的类都派生...

代码例如: 1.打开Modal对话框 CResultDlg dlg; dlg.DoModal(); 2.打开非Modal对话框 CTestDlg* pWnd=(CTestDlg*)AfxGetMainWnd(); ASSERT_VALID(pWnd); //定义父窗口指针pWnd CResultDlg* dlg; dlg=new CResultDlg(pWnd);//堆分配非模态对话框...

word中的“另存为”对话框就是模态对话框,你不把它关闭,不能进行其他操作。 word中的“查找与替换”对话框就是非模态对话框,你不把它关闭,能进行其他操作。

void CMyView::OnShow() { // TODO: Add your command handler code here CDIALOG1 dlg; dlg.Create(IDD_DIALOG1) ; dlg.ShowWindow(SW_SHOW); } 作为非模态对话框,你定义的dlg是一个局部对象,那么执行完dlg.ShowWindow(SW_SHOW);后一到}符号处O...

CXXXDlg *a;//定义要弹出的一个非模态对话框对象 a=new CXXXDlg;//分配 a->Create(IDD_XXX);//对话框ID a->ShowWindow(TRUE);//显示

不要创建基于对话框的MFC应用程序; 如果非要创建基于对话框的MFC应用程序,在dlg内部触发创建对话框,即在对应的***dlg,cpp中触发创建CMy33Dlg,你目前的做法由于程序顺序执行,没有死循环的话自然就退出了; 创建单文档或者多文档程序,在应用...

就本题而言, 模态与非模态没有区别, 仅仅是打开的方式不同, 考点就是不同DLG数据的传递.

你要设置一个变量,如果为假,就创建并显示这个对话框,同时将其置为true 这样下次再调用到这里,就不会重复创建了。

网站首页 | 网站地图
All rights reserved Powered by www.cfnr.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com