什么叫模态和非模态 举例说明
展开全部
对话框分为两类:「模态的」和「非模态的」
模态对话框:使用者不能在对话框与同一个程序中的另一个窗口之间进行切换,使用者必须主动结束该对话框,这藉由通过按一下「OK」或者「Cancel」键来完成。
通常可以从目前的程序切换到另一个程序。而有些对话框(称为「系统模态」)甚至连这样的切换程序操作也不允许。
模态对话框和非模态对话框的区别:
①
DialogBox DialogBoxParam创建模态对话框
CreateDialog CreateDialogParam创建非模态对话框
②非模态对话框通常包含一个标题列和一个系统菜单按钮,这些是内定选项
③非模态对话框如果省略了WS_VISIBLE,那么您必须在CreateDialog呼叫之后呼叫ShowWindow:
④与模态对话框和消息框的消息不同,非模态对话框的消息要经过程序的消息队列。要将这些消息传送给对话框窗口消息处理程序,则必须改变消息循环:
if (hDlgModeless == 0 || !IsDialogMessage (hDlgModeless, &msg))
如果对话框句柄为0或者不是对话框消息,才发送给主窗口的消息处理程序
⑤用DestroyWindow(hDlg)而不是EndDialog来结束非模态对话框,并将hDlgModeless整体变量设定为0。
模态对话框:使用者不能在对话框与同一个程序中的另一个窗口之间进行切换,使用者必须主动结束该对话框,这藉由通过按一下「OK」或者「Cancel」键来完成。
通常可以从目前的程序切换到另一个程序。而有些对话框(称为「系统模态」)甚至连这样的切换程序操作也不允许。
模态对话框和非模态对话框的区别:
①
DialogBox DialogBoxParam创建模态对话框
CreateDialog CreateDialogParam创建非模态对话框
②非模态对话框通常包含一个标题列和一个系统菜单按钮,这些是内定选项
③非模态对话框如果省略了WS_VISIBLE,那么您必须在CreateDialog呼叫之后呼叫ShowWindow:
④与模态对话框和消息框的消息不同,非模态对话框的消息要经过程序的消息队列。要将这些消息传送给对话框窗口消息处理程序,则必须改变消息循环:
if (hDlgModeless == 0 || !IsDialogMessage (hDlgModeless, &msg))
如果对话框句柄为0或者不是对话框消息,才发送给主窗口的消息处理程序
⑤用DestroyWindow(hDlg)而不是EndDialog来结束非模态对话框,并将hDlgModeless整体变量设定为0。
瑞地测控
2024-08-12 广告
2024-08-12 广告
在苏州瑞地测控技术有限公司,我们深知频率同步与相位同步的重要性。频率同步确保两个或多个设备的时钟频率变化一致,但相位(即时间点)可保持相对固定差值。而相位同步,即时间同步,要求不仅频率一致,相位也必须完全一致,即时间差恒定为零。相位同步的精...
点击进入详情页
本回答由瑞地测控提供
展开全部
模态对话框工作状态:当它获得焦点时,将垄断用户的输入,在完成本对话框之前,用户无法对本程序的其他部分进行操作。
非模态对话框类似于WORD里的查找替换,就在应用程序打开非模态对话框的同时还可以切换到其他窗口进行操作。
二者的类都派生于CDialog类,而CDialog类派生于CWnd类。
区别:
模态对话框使用CDialog::DoModal函数创建以及销毁。初始化消息WM_INITDIALOG,调用OnInitDialog初始化并显示,创建完毕后,DoModal启动消息循环。
非模态对话框使用CDialog::Create实现。由于Create函数不会启动新的消息循环,对话框与应用程序共用一个消息循环,就不会独占用户输入,Create函数在对话框显示后就立即返回。DoModal是在对话框关闭后才返回。对话框关闭后说明对话框窗口的对象已经销毁,只剩下C++对象还没有释放,所以必须调用CWnd::DestoryWindows函数来关闭非模态对话框。
非模态对话框类似于WORD里的查找替换,就在应用程序打开非模态对话框的同时还可以切换到其他窗口进行操作。
二者的类都派生于CDialog类,而CDialog类派生于CWnd类。
区别:
模态对话框使用CDialog::DoModal函数创建以及销毁。初始化消息WM_INITDIALOG,调用OnInitDialog初始化并显示,创建完毕后,DoModal启动消息循环。
非模态对话框使用CDialog::Create实现。由于Create函数不会启动新的消息循环,对话框与应用程序共用一个消息循环,就不会独占用户输入,Create函数在对话框显示后就立即返回。DoModal是在对话框关闭后才返回。对话框关闭后说明对话框窗口的对象已经销毁,只剩下C++对象还没有释放,所以必须调用CWnd::DestoryWindows函数来关闭非模态对话框。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
所谓模态对话框,就是指当这个对话框弹出的时候,鼠标不能单击这个对话框之外的区域,这种对话框往往是用户进行了某种操作后才出现的。例如:windows的选择字体颜色对话框 ;必须先关闭对话框才能进行其他操作;
非模态对话框通常用于显示用户需要经常访问的控件和数据,并且在使用这个对话框的过程中需要访问其它窗体的情况。例如:word的查找对话框。可以直接点击任何地方,例如,发邮件时添加附件就是个非模态的。
非模态对话框通常用于显示用户需要经常访问的控件和数据,并且在使用这个对话框的过程中需要访问其它窗体的情况。例如:word的查找对话框。可以直接点击任何地方,例如,发邮件时添加附件就是个非模态的。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询