打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
模态和非模态对话框的区别
模态对话框工作状态:当它获得焦点时,将垄断用户的输入,在完成本对话框之前,用户无法对本程序的其他部分进行操作。非模态对话框类似于WORD里的查找替换,就在应用程序打开非模态对话框的同时还可以切换到其他窗口进行操作。二者的类都派生于CDialog类,而CDialog类派生于CWnd类。区别:模态对话框使用CDialog::DoModal函数创建以及销毁。初始化消息WM_INITDIALOG,调用OnInitDialog初始化并显示,创建完毕后,DoModal启动消息循环。非模态对话框使用CDialog::Create实现。由于Create函数不会启动新的消息循环,对话框与应用程序共用一个消息循环,就不会独占用户输入,Create函数在对话框显示后就立即返回。DoModal是在对话框关闭后才返回。对话框关闭后说明对话框窗口的对象已经销毁,只剩下C++对象还没有释放,所以必须调用CWnd::DestoryWindows函数来关闭非模态对话框。
模态对话框可以直接显示不用调用ShowWindow,而非模态对话框用Create创,ShowWindow显,最后用DestoryWindows销毁
使用非模态对话框。假设你定义的对话框为 CDlg; cpp/h/资源文件都定义好了。 CDlg* pOneDlgObj = new CDlg; if ( pOneDlgObj) { BOOL ret = pOneDlgObj->Create(IDD_MYDIALOG,this); } pOneDlgObj->ShowWindow(SW_SHOW); //这样就行了,IDD_MYDIALOG为你的对话框资源ID
void CASCEView::OnDialog(){         CASCEDlg dlg;         dlg.DoModal();}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
VC中模态与非模态对话框的显示与关闭
VC++模态对话框和非模态对话框 | 求索阁
关于模式与非模式对话框
MFC 创建非模态对话框和销毁过程
模态对话框和非模态对话框区别
动态设置模态对话框标题
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服