作者:此女我很爱_484 | 来源:互联网 | 2023-05-18 14:23
RT,我创建了一个父对话框(模态),然后在OnInitialDialog里搞了几个非模态对话框(CREATE(IDD,this)这样,在父对话框里控制这些子对话框的显示与隐藏)。问题,在
RT,我创建了一个父对话框(模态), 然后在OnInitialDialog里搞了几个非模态对话框( CREATE(IDD,this)这样,在父对话框里控制这些子对话框的显示与隐藏)。
问题,在父子对话框都显示好了之后,如何实现按ESC关闭父对话框?
我是这样做的,重载子对话框的OnCancel函数,什么都不做,那么子对话框对自己发完了ESC消息后紧接着应该给父对话框也发ESC消息,这样父对话框什么也不用重载不就应该关闭掉麽?
麻烦各位给我从消息传递上讲讲应该怎么做?还是有什么属性没有设?
谢谢!
5 个解决方案
你什么也不作,它不会给父对话框发ESC的,为什么你认为它会发?
你正确的做法是在“当前窗口”中处理ESC,然后调用主窗口的CDialog::OnCancel()
至于当前窗口,就是那个标题栏是蓝色的那个窗口,因此这个逻辑需要在每个对话框类中都实现,如果每个都可以成为当前窗口的话
你的子窗口中不是保存了父窗口的指针了,直接发送一个WM_CLOSE消息就可以关闭父窗口了
>>那么子对话框对自己发完了ESC消息后紧接着应该给父对话框也发ESC消息,
这不对,消息只会定向发送一次,子对话框处理完了就完事了,你需要在对话框的OnCancel函数向父对话框发送esc消息
要写代码发close消息,不会自自
动把子窗口的关闭消息发到父窗口的.