在主窗体中创建mscomm控件,封装相应的数据发送及接受方法,设定消息分发机制,创建子对话框的时候把主窗体的对象传进去,子窗体便可以调用主窗体的相应方法

解决方案 »

  1.   

    1.怎么样才能让一个串口控件被各个对话框进行操作
    方法一:一旦在某个对话框类中关联了一个串口控件变量m_SerialPort,那么只要各个对话框能获取到该对话框中的串口控件的指针即可对其进行相应的操作。
    方法二:在某个对话框类中关联了一个窗口控件变量m_SerialPort,那么通过消息传递的机制,建立起对该消息响应的串口控制流程。具体如下:假设CMainDlg类中具有m_SerialPort串口控件变量,那么重载该对话框类的PreTranslateMessage函数,截获消息,如果是一些串口控制消息,那么在该函数内进行对m_SerialPort串口控件变量的操作。当然,其他各个对话框首先需要知道CMainDlg类成员的窗口句柄m_hWnd,这样才能往指定的窗口句柄PostMessge。
    2.如何实现子对话框串口发送的数据,返回数据到相应对话框
    根据问题1中的方法二,我们知道了m_SerialPort变量所属的对话框类的句柄,那么一旦在CMainDlg类中响应了串口的操作,我们可以将PreTranslateMessage函数中对串口操作的结果以消息的形式发送给指定的子对话框句柄,即PostMessage函数。然后在子对话框类中重载PreTranslateMessage函数来响应该消息,用来接收串口操作的结果,之后只要将具体数值显示到子对话框中的某个编辑框上即可。