模态和非模态对话框的区别

模态对话框工作状态:当它获得焦点时,将垄断用户的输入,在完成本对话框之前,用户无法对本程序的其他部分进行操作。 非模态对话框类似于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(); }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值