我现在要做一个串口通讯程序,用VC做
打算编一个基于对话框的,能够显示数据,并且使用GDI将数据用图像直观的表示出来。
想请问大家,线程能否在对话框中使用?
打算将GDI显示部分做成主线程,将数据的读入做成辅助线程,不过这一切都是在一个大的对话框里,不知行不行?
谢谢

解决方案 »

  1.   

    没问题。对话框初始化程序中创建一个工作线程,做好工作线程和GUI线程对数据访问的同步就行。
      

  2.   

    昨晚我试着在TTY程序的基础上加了一个对话框,作为输出数据之用,但是编译后运行不了啊,具体步骤如下:
    1,创建一个对话框类,在上面建立一个编辑框以便输入待发送的数据,还有一个按钮以便确认发送;对编辑框建立一个CString的变量m_sSendData,对按钮创建OnSend()的消息处理函数。
    2,在菜单栏中建立一个菜单选项,点击该菜单后,将会出现一个对话框,即发送数据的对话框。
    3,在对话框的.cpp文件中编辑OnSend函数:
             CTTYDoc* pDoc;
    UpdateData(TRUE);
    DWORD dwBytesWrite=10;
    COMSTAT ComStat; 
    DWORD dwErrorFlags; 
    BOOL bWriteStat; 

    AfxMessageBox("测试点1");

    ClearCommError(pDoc->m_hCom,&dwErrorFlags,&ComStat); 
    AfxMessageBox("测试点2");
    bWriteStat=WriteFile(pDoc->m_hCom,(LPCTSTR)m_sSendData,dwBytesWrite,& dwBytesWrite,NULL); 
    if(!bWriteStat) 

    AfxMessageBox("写串口失败!"); 

            AfxMessageBox("测试点3");编译没有问题,但是在执行时当AfxMessageBox("测试点1");语句执行完后,系统就出现了一个对话框,提示一个一个错误报告:TTY.exe 遇到问题需要关闭。我们对此引起的不便表示抱歉.....不明白为什么?是不是由于在对话框文件中不能够调用文档类里面的句柄资源啊?请大家指点
      

  3.   

    debug模式下。。看看pDoc->m_hCom句柄的值是多少,0的话肯定就不对了。
      

  4.   

    我在ClearCommError(pDoc->m_hCom,&dwErrorFlags,&ComStat); 前面设了一个断电,在调试时第一步系统就给出一个提示:
    Unhandled exception in TTY.exe:0xc0000005:Access Violation
    这个是为什么啊?
      

  5.   

    看你的代码,你的pDoc只有声明,没有赋值阿
      

  6.   

    回6楼,我只是想引用CTTYDoc类里面的m_hCom句柄而已,有必要给pDoc赋值吗?
    回7楼,这个句柄在CTTYDoc类里面通过CreateFile()函数赋值了啊:m_hCom=CreateFile();
    不过我也觉得是pDoc和m_hCom的问题,只是好像不是二位说得那种。
      

  7.   

    回6楼,我只是想引用CTTYDoc类里面的m_hCom句柄而已,有必要给pDoc赋值吗?
    回7楼,这个句柄在CTTYDoc类里面通过CreateFile()函数赋值了啊:m_hCom=CreateFile();
    不过我也觉得是pDoc和m_hCom的问题,只是好像不是二位说得那种。