大家好,我这几天在做串口通信,使用了两个对话框,主对话框通过DoModal()调用子对话框,两个对话框为主从关系。串口的初始化在主对话框中,然后子对话框也要对已经在主对话框中初始化过的串口进行读写操作,子对话框如何调用主对话框已经打开的串口,本质上是一个主从对话框对同一个串口的共享操作,非常着急,请大家帮忙!

解决方案 »

  1.   

    DoModal()未返回前,你的主对话框运行就停那了。所以你的思路是不是可行呢?
    你可以创建非模态对话框,在你的主对话框中接收串口数据,处理后,然后根据你的需要调用你的子对话框中的函数啊
      

  2.   

    不知道你的串口是如何操作的。我原来做类似的项目,串口使用API自己写的类,主对话框和子对话框中都有一个串口类的指针变量,在主对话框中打开串口,弹出子对话框后,将主对话框中的串口指针赋给子对话框,子对话框可以使用串口类指针对串口进行写操作。如果子对话框要处理串口数据,则把接收串口数据的窗口设为子对话框,子对话框关闭后再把接收数据窗口设为主对话框,如果子对话框只是发送数据,这一步就不用了。MSCOMM控件没用过,就不知道该怎么搞了。
      

  3.   

    CMainDlg *dlg=(CMainDlg *)GetActiveWindow();
    dlg->m_comm.SetOutput(COleVariant("comm_test,lcd_dlp_switch@"));我这里是使用的MSCOMM控件
    你用dlg这个指针调用你的串口变量就是了
      

  4.   

    俺一般使用纯api,在哪里都可以了。