非模态对话框的使用

我:

通过Create函数来调用非模态对话框是关键之处。

由于create不会启动新的消息循环,对话框与应用程序共用同一个消息循环,这样对话框就不会垄断用户的输入。

Create函数会在显示了对话框之后立即返回,而DOMODAL()函数是在对话框被关闭后才返回。

由于窗口对象的生存期应长于对应的窗口,也就是说,窗口(或者说对话框)关闭了,但是对象并不一定会被删除。

由于Create返回后,不能确定对话框是否被关闭,所以何时去删除对象成为一个程序员需要考虑的事情。

如此一来,对象的创建一定不能是局部变量,必须是采用 new来创建再heap中。 关于非模态对话框的销毁,

应该是重载PostNcDestroy函数,见后边的参考代码。

// 网摘内容:非模态对话框相对于模态对话框,他的创建和销毁过程和模态对话框有一定的区别 先看一下MSDN的原文:

 When you implement a modeless dialog box, always override the OnCancel member function and call

DestroyWindow from within it. Don’t call the base class CDialog::OnCancel, because it calls EndDialog, which will

make the dialog box invisible but will not destroy it. You should also override PostNcDestroy for modeless dialog

 boxes in order to delete this, since modeless dialog boxes are usuall

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值