我现在写一个串口通信的程序,已经写好四个按钮的实现功能,
void CSeriesDlg::OnButton1() ;
void CSeriesDlg::OnButton2() ;
void CSeriesDlg::OnButton3() ;
void CSeriesDlg::OnButton4() ;
点击每个按钮发送相应命令并接收返回数据,现在要加一个按钮 button5实现类似我按button1,再按button2,再button4这样的功能.
我现在直接在在button5的消息响应函数中调用CSeriesDlg::OnButton1(),或者CSeriesDlg dlg;dlg.OnButton1(),这样都会运行时错误,请问该怎么弄??

解决方案 »

  1.   

    button5的消息响应函数中直接调用其它button的响应函数:
    void CSeriesDlg::OnButton5() 
    {
        OnButton1() ;
        OnButton2() ;
        OnButton3() ;
        OnButton4() ;
    }
      

  2.   

    4个按钮的消息响应函数都包括发送和接收并显示结果过程
    如果按
    void CSeriesDlg::OnButton5()   
    {  
        OnButton1() ;  
        OnButton2() ;  
        OnButton3() ;  
        OnButton4() ;  

    在串口监视软件中看到这种方法的确发送接收了四条命令但只能看到最后一个显示结果;在中间插Sleep(500);也是一样就只显示最后一个结果,
      

  3.   

    回LS:
      你没有帐号出代码,我们不可能猜出依次执行 OnButton1() ~ OnButton4() 会是什么样的结果(当然,即使贴出来也许我们也无法验证)。至少,现在没有运行错误了!结果不是你想要的“结果”,是你“程序逻辑”的问题,这个要你自己解决。  提醒你一点:你所谓“只能看到最后一个显示结果”,这个“结果”反映在哪(我们无法知道)?依次执行 OnButton1() ~ OnButton4() 的时候,是后一个的输出把前一个“覆盖”了吧?如果是,如何避免“覆盖”,就是你自己需要解决的“逻辑”问题!!!
      

  4.   

    的确是我没说清楚
    每个按钮消息响应函数中最后都有
    SetDlgItemText(IDC_EDIT2,strall);  //发送和接收结果在IDC_EDIT2显示
    FFPortClearRxBuf(nPort);           //清除串口缓冲区