dlg.DoModal(); 
==========
这是模态的,不可能,用非模态的。

解决方案 »

  1.   

    父窗体某代码片段中...
    CChildDlg childDlg;
    childDlg.Create(IDD_CHILDDLG, this);
    childDlg.ShowWindow(SW_SHOW);
    子窗体就出来了非模态的。
    然后在子窗体按钮响应里边GetParent得到父窗体的指针(CWnd*),转型为父窗体类的类型指针,接着想干嘛干嘛。
      

  2.   

    父窗口自定义个结构,用来存储子窗口的相关信息,自窗口初始化时,传递这个结构的指针,等到子窗口onok发生时,把子窗口的这些信息写到这个结构里边。这样就能得到子窗口保留的信息了,就行打开和保存对话框一样,需要有个结构!
      

  3.   

    刚才没有看清问题。不好意思。
    不关闭的话就是6、7、8楼说的,使用postmessage自定义消息。
      

  4.   


    void CChildDlg::OnBnClickedButton1()
    {
    CMainDlg* pDlg=(CMainDlg*)(AfxGetApp()->m_pMainWnd);
    pDlg->SetText("aaa");
    }
    void CMainDlg::SetText(CString text)
    {
    CWnd* pWnd = GetDlgItem(IDC_EDIT1);
    if(pWnd)
    {
    CString str;
    pWnd->GetWindowText(str);
            str+=text;
    pWnd->SetWindowText(str);
    }
    }
      

  5.   

    postmessage用参数传递过去,没有问题的。
      

  6.   

    使用非模态对话框 然后自定义消息 POST给主窗口,或着按3楼的说法,在BUTTON的事件函数中 使用CWnd* pParentWnd = GetParent()得到父窗口类指针,接着用This->GetDlgIteText(...);pParentWnd->SetDlgItemText(...);
      

  7.   

    方法很多,例如,在子窗口中要把主窗口中IDC_EDIT1控件改成“1”,可以这样做:
    GetParent()->SetDlgItemText(IDC_EDIT1, _T("1"));