A页面是串口设置页面(我用控件实现的),当设置好后,通过B页面调用已经设置好的A页面的串口,从而实现通讯,请问B页面怎么调用A页面的串口?

解决方案 »

  1.   

    怎么导出啊?能不能具体点,我思路是这样的:直接传递串口控件,然后他的状态肯定就直接传递过来了,但是我写的代码连编译都不能通过
    这样写的 Bdlg 定义个CMSComm类型的变量mcom,Adlg有个串口控件叫m_com 则 mcom=adlg.m_com
    这样报错
      

  2.   

    你这样不行的,要知道你的adlg是在什么地方创建的才行,如果是在InitInstance中创建的局部变量,那是不可能在Bdlg中访问到adlg中的m_com对象的,总之,要看到你的源代码才行,你发源代码到[email protected],我来帮你改
      

  3.   


    用指针就可以了
    Bdlg 定义个CMSComm*类型的变量mcom,Adlg有个串口控件叫m_com 则 mcom=&adlg.m_com
      

  4.   

    按照5楼的做了,语法编译过去了,运行出错了,0xC0000005:Access Violation,c++用的时间短,不怎么会改
      

  5.   

    首先,你的确保你的mcom指针在你进行各种操作SetCommPort,SetPortOpen等等操作前已经mcom = &dlg.m_com
    其次,你得确保你的COMM操作本身有无问题,比如,你是不是没有SetPortOpen就已经在SendData了。还有,你的搞清楚是不是其它的问题造成的建议你一步步来,先屏蔽所有的B页面关于mcom的操作,包括mcom=&dlg.m_com,然后再一点点加上代码,看看出错在哪一步
    如果你会用调试工具的话,相信很快能调出来的
      

  6.   

    CModuleDlg dlg;放在InitInstance外面定义了,运行时报错,放在InitInstance里面了,然后紧接着com=&dlg.m_com; 在就运行当if(com->GetPortOpen())就报错,是我的com没有获取到吗?我跟踪com是0x0013ec94
      

  7.   

    1.为CMain对话框创建CMSComm类型的成员变量指针,代码如下:
             CMSComm* m_commptr;
    2.修改CMain的对话框的构造函数,初始化指针m_commptr:
       在类定义文件中(Main.h):
       CMain(CWnd* pParent = NULL,CMSComm* objptr = NULL);
       在类实现文件中(Main.cpp):
       CMain::CMain(CWnd* pParent,CMSComm* objptr/*=NULL*/)
        : CDialog(CMain::IDD, pParent)
      {
       //{{AFX_DATA_INIT(CMain)
        // NOTE: the ClassWizard will add member initialization here
       //}}AFX_DATA_INIT
       m_commptr = objptr;
      }
    3.在CModuleDlg::OnButton1()中创建CMain对话框,做以下修改
      CMain dlg(NULL,&m_com);
    做完以上步骤,就可在CMain类的成员函数中随便调用串口对象了,不论是获取它的各种信息还是对它进行操作都可以,如:
    void CMain::OnButton1() 
    {
    // TODO: Add your control notification handler code here
      if(m_commptr->GetPortOpen())
      { 
      }
    }
    这是楼上的正确答案,在这要谢谢他,同时也谢谢所有给我思路,帮我分析问题解决问题的人