程序中有一个主对话框和两个子对话框,都要用CMSComm这个控件,我在主对话框中加入这个控件,并创建了一个对象,请问在子对话框中怎样访问?我在子对话框中用CParDlg::m_ctrlComm.GetPortOpen();
为什么老报错error C2228: left of '.GetPortOpen' must have class/struct/union type
其中CParDlg是主对话框,m_ctrlComm是一个控件的对象

解决方案 »

  1.   

    必须先要有主对话框的指针,可以自己传this指针过去。
      

  2.   

    (CParDlg*)GetParent())->m_ctrlComm.GetPortOpen();
      

  3.   

    若按照he_zhidan(何志丹:壮志在我心) 
    得:
    'm_ctrlComm' : is not a member of 'CWnd'怎么办啊?
      

  4.   

    可以在子对话框定义一个指针(public)
    CMSComm *pCOM;
    然后在主对话框调用子对话框时把指针传过去
    CChildDlg dlg;
    dlg.pCOM = &m_ctrlComm;
    dlg.DoModal();
      

  5.   

    afxGetmianWnd()->m_ctrlComm.GetPortOpen();
      

  6.   

    定义子对话框的构造函数,将指针传过去
    CChildDlg *pdlg;
    pdlg= new CChildDlg(m_ctrlComm) ;
    pdlg->DoModal();
      

  7.   

    ((CParDlg*)GetParent())->m_ctrlComm.GetPortOpen();
    不好意思漏了括号
    先强制类型转换
      

  8.   

    CParDlg::m_ctrlComm.GetPortOpen();
    CParApp* myapp=(CParApp*)AfxGetApp();
    ((CParDlg*)myapp->m_pMainWnd)->m_ctrlComm.GetPortOpen();