CDlgA的对象 调用 CDlgB的对象 (方法:dlg.DoModal()), CDlgB的对象做了一个动作(m_nSendStatus = 1;m_nSendStatus是CDlgB的成员变量),想把这个值传给CDlgA的对象, 有什么好方法? (除了设置全局变量的方法)          CDlgB  dlg;
if (dlg.DoModal() == IDOK)
{
           ////想在这里通过指针,把值传出来.
}

解决方案 »

  1.   

    晕死,这不是很简单吗?CDlgB  dlg;
    if (dlg.DoModal() == IDOK)
    {
       xxx = dlg.m_nSendStatus;
      

  2.   

    class CDlgA;class CDlgB
    {
    public:
        CDlgB(){m_pDlgA = NULL;}
        void SetDlgAPointer(CDlgA * pDlgA){m_pDlgA = pDlgA;}
        void OnInitDialog(){if (m_pDlgA) m_pDlgA->DoSomething();}
    protected:
        CDlgA * m_pDlgA;
    };class CDlgA
    {
    public:
        void DoSomething(){};
        void OnInitDialog()
        {
            CDlgB  dlg;
            dlg.SetDlgAPointer(this);
            if (dlg.DoModal() == IDOK) 
            { 
            } 
        }
    };
      

  3.   

    CDlgB  dlg; 
    if (dlg.DoModal() == IDOK) 

      xxx = dlg.m_nSendStatus;     -----> dlg都退了来了,为什么它的变量还有效?

      

  4.   


    dlg还没析构,成员变量当然有效
      

  5.   

    根据上面的情况中,
    CDlgB  dlg; 
    if (dlg.DoModal() == IDOK) 

    xxx = dlg.m_nSendStatus;   -----> dlg都退了来了,为什么它的变量还有效?   -->dlg还没析构,成员变量当然有效 
    nCount = dlg.m_listbox.GetCount(); ---->没有析构,为什么无效,不能访问到.

      

  6.   


    虽然没有析构,但是dlg的窗口已经Destroy了,他里面的子窗口(比如这个m_listbox)也会全部Destroy