主窗口弹出了3个无模式对话框A,B,C
当其中一个无模式对话框关闭时候
主窗口怎么能知道关闭的是A,B还是C

解决方案 »

  1.   

    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(),该怎么设置?
      

  2.   

    App类里不支持Dlg成员???问一下???
      

  3.   

    无模式对话框 的关闭 应该是隐藏吧!用 IsWindowVisible() 判断一下 那个隐藏了就知道了嘛!
      

  4.   

    主窗口类加个成员变量..
     子窗口Close时 用GetParent() 去改写成员变量
    ^_^比较笨的办法...
      

  5.   

    无模式对话框 的关闭 应该是隐藏吧!
    -------------
    无模式对话框 的关闭不会响应 OnDestroy()函数
    只有主窗口关闭时候才会跳到OnDestroy()
    这样能说明它是隐藏 而不是关闭吗?
      

  6.   

    父窗口建立子对话框的时候,设置一个子对话框的成员变量标记。
    子窗口关闭的时候,将那个变量发送回去……sendmessage发过去
      

  7.   

    还有,你建非模态对话框的时候,父窗口应该知道那三个子窗口的指针的,不然你怎么销毁子窗口?
    除非用PostNCDestroy……
      

  8.   

    还有,你建非模态对话框的时候,父窗口应该知道那三个子窗口的指针的,不然你怎么销毁子窗口?
    除非用PostNCDestroy……
    ===========================
    我就需要知道是哪个子窗口关闭
    然后在主窗口把它给销毁void CChildrenDlg::OnClose() 
    {
    // TODO: Add your message handler code here and/or call default
    AfxGetMainWnd()->SendMessage(WM_EXITCHILDRENUI, 0, 1);
    CDialog::OnClose();
    }
    三个窗口关闭时候给主窗口发送的都是这个消息
      

  9.   

    父窗口建立子对话框的时候,设置一个子对话框的成员变量标记。
    子窗口关闭的时候,将那个变量发送回去……sendmessage发过去
    ===================
    能否帮忙给段代码?
      

  10.   

    销毁非模态子对话框大约有这么两种方法:
    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;
      

  11.   

    m_pChildDlg1->m_pParent = this; 
    /////////这句 是父窗口告诉告诉子窗口自己的地址?关闭的时,在子窗口OnClose事件里发送个消息给父窗口,
    PostMessage(/*自定义消息*/,0,/*自己的地址*/);
    /////////子窗口如何获取自己的地址?Thanks
      

  12.   

    m_pChildDlg1->m_pParent = this;
    this就是自己啊~相当于自己的地址了~
      

  13.   

    说错说错~
    m_pChildDlg1->m_pParent = this;是父窗口告诉子窗口自己地址。子窗口知道了父窗口地址就可以Postmessage……
    m_pChildDlg1->m_pParent->PostMessage(/*自定义消息*/,0,this);
    即可