MFC中dialog的模态和非模态调用

MFC中的对话框分为模态和非模态两种。模态对话框在运行时独占用户输入,直到关闭;非模态对话框允许用户在对话框打开时操作其他窗口。模态对话框通过CDialog::DoModal创建,非模态对话框使用CDialog::Create,并需手动调用DestroyWindow关闭。模态对话框无需调用ShowWindow,而非模态对话框需结合Create和ShowWindow使用。
摘要由CSDN通过智能技术生成

MFC中dialog的模态和非模态调用

非模态和模态的特点

  • 模态对话框工作状态:当它获得焦点时,将垄断用户的输入,在完成本对话框之前,用户无法对本程序的其他部分进行操作。
  • 非模态对话框类似于WORD里的查找替换,就在应用程序打开非模态对话框的同时还可以切换到其他窗口进行操作。
  • 二者的类都派生于CDialog类,而CDialog类派生于CWnd类。
  • 模态对话框使用CDialog::DoModal函数创建以及销毁。初始化消息WM_INITDIALOG,调用OnInitDialog初始化并显示,创建完毕后,DoModal启动消息循环。
  • 非模态对话框使用CDialog::Create实现。由于Create函数不会启动新的消息循环,对话框与应用程序共用一个消息循环,就不会独占用户输入,Create函数在对话框显示后就立即返回。
  • DoModal是在对话框关闭后才返回。对话框关闭后说明对话框窗口的对象已经销毁,只剩下C++对象还没有释放,所以必须调用CWnd::DestoryWindows函数来关闭非模态对话框。
  • 模态对话框可以直接显示不用调用ShowWindow,而非模态对话框用Create创,ShowWindow显,最后用DestoryWindows销毁。
  • 由于拥有者窗口在被关闭时会调用Des
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_长风_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值