★☺如何在非模态对话框的隐藏/销毁中 销毁父窗口(模态对话框)?☺★

likang0712 2011-06-15 11:54:18


点击按钮,弹出模态对话框,该对话框的初始化函数中创建了一个非模态对话框


BOOL CDlgBig::OnInitDialog()
{
CDialog::OnInitDialog();

...
m_pDlgSmall = new CDlgSmall;
m_pDlgSmall->Create(IDD_SMALL, this);
m_pDlgSmall->ShowWindow(SW_SHOW);

return TRUE;
}




m_pDlgSmall这个非模态对话框 点击 [确定]/[取消]/[键盘上的Esc]/[回车]/[空格] 等等的时候 非模态对话框会隐藏

我已经在[取消]代码中 将该对话框销毁


void CDlgSmall::OnCancel()
{
CDlgBig * pBigDlg = (CDlgBig*)GetParent();
pBigDlg->DestoryBackWnd();//调用OnOk()销毁父窗口 即模态对话框

DestroyWindow();
}


void CDlgSmall::PostNcDestroy()
{
CDialog::PostNcDestroy();
delete this;
}




现在 我想在 m_pDlgSmall 隐藏/销毁 的时候 将父窗口模态对话框 CDlgBig给销毁了

该如何实现?

在m_pDlgSmall 中截获所有的是窗口隐藏的消息? 还是怎么弄?


PS: 我需要使用模态对话框的OnMove 来移动非模态对话框 所以将这个非模态对话框弄成模态对话框貌似不可行 ; )




百度了 也查了CSDN 都是关于非模态对话框是如何销毁了


谢谢大家





...全文
74 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2011-06-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 shenyi0106 的回复:]
模态对话框是你DoModual()出来的,肯定有个地方在等待它返回,返回后应该会有它的相关销毁的处理
你直接调用OnOK()/OnCancel()就可以了(这两个函数是protected的,需要用public的函数封装一下)
[/Quote]

我现在主要就需要解决:非模态对话框什么时候(或者什么消息)后会隐藏/销毁....

谢谢哈
Eleven 2011-06-15
  • 打赏
  • 举报
回复
你的父窗口销毁了那么你的子窗口也会被销毁
shenyi0106 2011-06-15
  • 打赏
  • 举报
回复
模态对话框是你DoModual()出来的,肯定有个地方在等待它返回,返回后应该会有它的相关销毁的处理
你直接调用OnOK()/OnCancel()就可以了(这两个函数是protected的,需要用public的函数封装一下)
「已注销」 2011-06-15
  • 打赏
  • 举报
回复





顶顶~~

「已注销」 2011-06-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 visualeleven 的回复:]
你的父窗口销毁了那么你的子窗口也会被销毁
[/Quote]

恩 11大哥 非模态对话框什么时候(或者什么消息)后会隐藏/销毁.... 求告知...

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧