CTeletoneDlg *dlgTeletone = (CTeletoneDlg *)m_hWnd; dlgTeletone->SendData(1,SendData,5);
用如上所示方法后,在执行SendData方法中的检测串口状态时出现异常
if(m_CommA3.GetPortOpen()==TRUE)
{
                   }
如何才能在子窗口中调用父窗口的方法?方法内有串口检查操作
谢谢!

解决方案 »

  1.   

    如果只是子窗口调用父窗口的方法的话,只要把父窗口的this指针传给子窗口就可以了:
    (以下是示例代码,没有测试,仅供参考)
    注意:子父类的相互调用,牵涉到了头文件循环引用的问题,可以统一在afx.h中include子父类头文件。
    class CParentDlg ;
    {
      CChildDlg m_childDlg;
      CParentDlg()
      {
        m_childDlg.m_pParent = this;
      }
      ShowHello()
      {
        AfxMessageBox("hello");
      }
    }
    class CChildDlg
    {
      public:
      CParentDlg *m_pParent;
      
      CChildDlg()
      {
        m_pParent = NULL;
      }
      DoSomething()
      {
        if(m_pParent != NULL)
          m_pParent->ShowHello();
      }
    }