请问怎么在关闭子窗体的同时把父窗体也关了

lhx20 2010-04-16 01:30:59
请问怎么在关闭子窗体的同时把父窗体也关了
...全文
316 24 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhx20 2010-04-19
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 chen404293923 的回复:]
搞定了就把代码贴出来啊 做人要厚道
[/Quote]

就是20楼的代码啊。
清风盛开 2010-04-16
  • 打赏
  • 举报
回复
搞定了就把代码贴出来啊 做人要厚道
lhx20 2010-04-16
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 xianglitian 的回复:]
报什么错?
[/Quote]

搞定,是我的问题,谢谢你拉
向立天 2010-04-16
  • 打赏
  • 举报
回复
报什么错?
lhx20 2010-04-16
  • 打赏
  • 举报
回复
我在子窗体这样写会出错

void CResultDlg::OnBnClickedRestart()
{
this->GetParent()->EndModalLoop(0);
OnOK();

//popup main window
CMainDlg dlg = new CMainDlg();
dlg.DoModal();
}
向立天 2010-04-16
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 lhx20 的回复:]
引用 13 楼 xianglitian 的回复:
你的父窗口还是DoModal的?
如果是这样会比较麻烦
我随便写段代码说明我的意思吧


C/C++ code

//调用父窗口
CYourDlg yourDlg
while(yourDlg.DoModal()!=IDOK);

/////////////////////////////////////////

//父……
[/Quote]

代码我都写了
如果实现不了你的需求我也没有办法
还要怎么帮啊
Eleven 2010-04-16
  • 打赏
  • 举报
回复
一般开守护进程。。。
Eleven 2010-04-16
  • 打赏
  • 举报
回复
CreateProcess(NULL, GetCommandLine(),....); //再次运行
lhx20 2010-04-16
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 xianglitian 的回复:]
你的父窗口还是DoModal的?
如果是这样会比较麻烦
我随便写段代码说明我的意思吧


C/C++ code

//调用父窗口
CYourDlg yourDlg
while(yourDlg.DoModal()!=IDOK);

/////////////////////////////////////////

//父窗口内的一个子窗口退出时

GetParent(……
[/Quote]

帮帮忙拉,我真的不会拉
bragi523 2010-04-16
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 bragi523 的回复:]
建议你自定义一个消息,发向主消息循环,然后住消息循环处理这个消息,来关闭和重启父窗口
[/Quote]
发向主消息循环postmessage(NULL.....);
bragi523 2010-04-16
  • 打赏
  • 举报
回复
建议你自定义一个消息,发向主消息循环,然后住消息循环处理这个消息,来关闭和重启父窗口
向立天 2010-04-16
  • 打赏
  • 举报
回复
你的父窗口还是DoModal的?
如果是这样会比较麻烦
我随便写段代码说明我的意思吧


//调用父窗口
CYourDlg yourDlg
while(yourDlg.DoModal()!=IDOK);

/////////////////////////////////////////

//父窗口内的一个子窗口退出时

GetParent()->EndModalLoop(0);
lhx20 2010-04-16
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 xianglitian 的回复:]
你是想发个消息让父窗口重启?
[/Quote]

Yes,或者说怎么让父窗体重启
向立天 2010-04-16
  • 打赏
  • 举报
回复
你是想发个消息让父窗口重启?
lhx20 2010-04-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 cpp2017 的回复:]
如果要重启父窗体,而父窗体又是一个模态对话框的话,你要在调用父窗体的窗口或代码中做.

也就是说要向父窗口的父窗口发消息来启动.
[/Quote]

怎么发?发什么?帮帮忙?
cpp2017 2010-04-16
  • 打赏
  • 举报
回复
如果要重启父窗体,而父窗体又是一个模态对话框的话,你要在调用父窗体的窗口或代码中做.

也就是说要向父窗口的父窗口发消息来启动.
lhx20 2010-04-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cpp2017 的回复:]
那如果重新启动父窗体呢?

用这个关闭了之后,再DoModal()的时候出错了。
==>
DoModal之前,要判断一下GetSafeHandle()是不是null,否则要创建.


看你的意思不是真的要关闭,只是要隐藏,那就发个隐藏消息.

WM_SHOWWINDOW,SW_HIDE,
[/Quote]

我不是想隐藏,想重新启动父窗体。

具体怎么操作呢?
lhx20 2010-04-16
  • 打赏
  • 举报
回复

this->GetParent()->PostMessage(WM_CLOSE);
OnOK();

//popup main window
CMainDlg dlg = new CMainDlg();
dlg.DoModal();
cpp2017 2010-04-16
  • 打赏
  • 举报
回复
那如果重新启动父窗体呢?

用这个关闭了之后,再DoModal()的时候出错了。
==>
DoModal之前,要判断一下GetSafeHandle()是不是null,否则要创建.


看你的意思不是真的要关闭,只是要隐藏,那就发个隐藏消息.

WM_SHOWWINDOW,SW_HIDE,
an_bachelor 2010-04-16
  • 打赏
  • 举报
回复
在子窗口的OnDestry中
GetParent()->DestroyWindow();
加载更多回复(4)

16,548

社区成员

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

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

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