热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

MFC对话框嵌套ESC子窗口关闭

RT,我创建了一个父对话框(模态),然后在OnInitialDialog里搞了几个非模态对话框(CREATE(IDD,this)这样,在父对话框里控制这些子对话框的显示与隐藏)。问题,在
RT,我创建了一个父对话框(模态), 然后在OnInitialDialog里搞了几个非模态对话框(  CREATE(IDD,this)这样,在父对话框里控制这些子对话框的显示与隐藏)。

问题,在父子对话框都显示好了之后,如何实现按ESC关闭父对话框?

我是这样做的,重载子对话框的OnCancel函数,什么都不做,那么子对话框对自己发完了ESC消息后紧接着应该给父对话框也发ESC消息,这样父对话框什么也不用重载不就应该关闭掉麽?

麻烦各位给我从消息传递上讲讲应该怎么做?还是有什么属性没有设?

谢谢!

5 个解决方案

#1


你什么也不作,它不会给父对话框发ESC的,为什么你认为它会发?
你正确的做法是在“当前窗口”中处理ESC,然后调用主窗口的CDialog::OnCancel()
至于当前窗口,就是那个标题栏是蓝色的那个窗口,因此这个逻辑需要在每个对话框类中都实现,如果每个都可以成为当前窗口的话

#2


你的子窗口中不是保存了父窗口的指针了,直接发送一个WM_CLOSE消息就可以关闭父窗口了

#3


>>那么子对话框对自己发完了ESC消息后紧接着应该给父对话框也发ESC消息,

这不对,消息只会定向发送一次,子对话框处理完了就完事了,你需要在对话框的OnCancel函数向父对话框发送esc消息

#4


只会定向传递一次啊?我看MSDN上有个什么Message route 的东西不是说会给自己和父窗口发的么?
引用 3 楼 vann1982 的回复:
>>那么子对话框对自己发完了ESC消息后紧接着应该给父对话框也发ESC消息,

这不对,消息只会定向发送一次,子对话框处理完了就完事了,你需要在对话框的OnCancel函数向父对话框发送esc消息

#5


要写代码发close消息,不会自自
动把子窗口的关闭消息发到父窗口的.

推荐阅读
author-avatar
此女我很爱_484
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有