HELP:无模式对话框消息响应

drjojo 2006-11-17 04:04:06
主窗口弹出了3个无模式对话框A,B,C
当其中一个无模式对话框关闭时候
主窗口怎么能知道关闭的是A,B还是C
...全文
212 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
某鸟 2006-11-23
  • 打赏
  • 举报
回复
说错说错~
m_pChildDlg1->m_pParent = this;是父窗口告诉子窗口自己地址。

子窗口知道了父窗口地址就可以Postmessage……
m_pChildDlg1->m_pParent->PostMessage(/*自定义消息*/,0,this);
即可
某鸟 2006-11-23
  • 打赏
  • 举报
回复
m_pChildDlg1->m_pParent = this;
this就是自己啊~相当于自己的地址了~
drjojo 2006-11-20
  • 打赏
  • 举报
回复
m_pChildDlg1->m_pParent = this;
/////////这句 是父窗口告诉告诉子窗口自己的地址?

关闭的时,在子窗口OnClose事件里发送个消息给父窗口,
PostMessage(/*自定义消息*/,0,/*自己的地址*/);
/////////子窗口如何获取自己的地址?

Thanks
某鸟 2006-11-19
  • 打赏
  • 举报
回复
销毁非模态子对话框大约有这么两种方法:
1.重载虚函数PostNCDestroy……在那地方写delete this,全都省事了……
但是这样有个小缺点:父窗口不知道子窗口关了。
内存泄漏倒是没有,只是父窗口可能要在子窗口关闭的时候做点事,他不知道子窗口啥时候关就不好办了……:)

2.父窗口在建立子窗口的时候,告诉子窗口自己的地址,
CChildDlg *m_pChildDlg1 = new CChildDlg...;
m_pChildDlg1->m_pParent = this;
m_pChildDlg1->ShowWindow(SW_SHOW);
关闭的时,在子窗口OnClose事件里发送个消息给父窗口,
PostMessage(/*自定义消息*/,0,/*自己的地址*/);
父窗口处理这个消息:
...//做点其它的……
if(m_pChild1)
delete m_pChildDlg1;
某鸟 2006-11-18
  • 打赏
  • 举报
回复
还有,你建非模态对话框的时候,父窗口应该知道那三个子窗口的指针的,不然你怎么销毁子窗口?
除非用PostNCDestroy……
某鸟 2006-11-18
  • 打赏
  • 举报
回复
父窗口建立子对话框的时候,设置一个子对话框的成员变量标记。
子窗口关闭的时候,将那个变量发送回去……sendmessage发过去
drjojo 2006-11-18
  • 打赏
  • 举报
回复
父窗口建立子对话框的时候,设置一个子对话框的成员变量标记。
子窗口关闭的时候,将那个变量发送回去……sendmessage发过去
===================
能否帮忙给段代码?
drjojo 2006-11-18
  • 打赏
  • 举报
回复
还有,你建非模态对话框的时候,父窗口应该知道那三个子窗口的指针的,不然你怎么销毁子窗口?
除非用PostNCDestroy……
===========================
我就需要知道是哪个子窗口关闭
然后在主窗口把它给销毁

void CChildrenDlg::OnClose()
{
// TODO: Add your message handler code here and/or call default
AfxGetMainWnd()->SendMessage(WM_EXITCHILDRENUI, 0, 1);
CDialog::OnClose();
}
三个窗口关闭时候给主窗口发送的都是这个消息
drjojo 2006-11-17
  • 打赏
  • 举报
回复
无模式对话框 的关闭 应该是隐藏吧!
-------------
无模式对话框 的关闭不会响应 OnDestroy()函数
只有主窗口关闭时候才会跳到OnDestroy()
这样能说明它是隐藏 而不是关闭吗?
drjojo 2006-11-17
  • 打赏
  • 举报
回复
如果我有100个窗口呢?
那不是很麻烦?
呵呵
charlen 2006-11-17
  • 打赏
  • 举报
回复
主窗口类加个成员变量..
子窗口Close时 用GetParent() 去改写成员变量
^_^比较笨的办法...
lwykj 2006-11-17
  • 打赏
  • 举报
回复
无模式对话框 的关闭 应该是隐藏吧!

用 IsWindowVisible() 判断一下 那个隐藏了就知道了嘛!
alan001 2006-11-17
  • 打赏
  • 举报
回复
App类里不支持Dlg成员???问一下???
zx_hero 2006-11-17
  • 打赏
  • 举报
回复
ftq2w3eq
zx_hero 2006-11-17
  • 打赏
  • 举报
回复
efsdfsd
drjojo 2006-11-17
  • 打赏
  • 举报
回复
void CChildrenDlg::OnClose()
{
// TODO: Add your message handler code here and/or call default
CWnd* pWnd = AfxGetMainWnd();
AfxGetMainWnd()->SendMessage(WM_EXITCHILDRENUI, 0, 1);
CDialog::OnClose();
}
ABC都是CChildrenDlg类的窗口,关闭时响应的都是同一个OnClose(),该怎么设置?
  • 打赏
  • 举报
回复
这里的关闭,应该是指隐藏吧

可以在A里做吧,那样就好做
happyness44 2006-11-17
  • 打赏
  • 举报
回复
或者用全局变量
happyness44 2006-11-17
  • 打赏
  • 举报
回复
自定义消息,关闭的时候传给主窗口

15,975

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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