我要执行以下几项操作:
1)读文本文件数据到Edit
2)UpdateData(FALSE)
3)将这些数据写入单片机
但第3)项执行的时间较长,Edit的内容总是要等到
第3)项操作执行完才显示出来,现在我想在第3)项
操作执行以前Edit的内容就显示出来应该要怎么做?
我原本想通过第2)项操作来实现的但是不行。

解决方案 »

  1.   

    1)用InvalidateRect试试!The InvalidateRect function adds a rectangle to the specified window抯 update region. The update region represents the portion of the window抯 client area that must be redrawn. BOOL InvalidateRect(    HWND hWnd, // handle of window with changed update region  
        CONST RECT *lpRect, // address of rectangle coordinates 
        BOOL bErase // erase-background flag 
       ); 2)把第三步"数据写入单片机"的事情放在一个独立的线程里。具体的写法是串口的问题,CSDN里很多,那个CSerialPort可以参考。
      

  2.   

    怎会呢,将Edit绑定到一个字串变量中,执行UpdateData(FALSE),edit的内容就赋值给了字串,然后把字串写入单片机。楼主的执行顺序变了吗?
      

  3.   

    我觉得你可以把编辑框的控件指针传过去(或者用GetDlgItem函数得到),然后用SetWindowText函数直接设置文本内容
      

  4.   

    开线程太麻烦!
    把你的语句改成:1)读文本文件数据到Edit
    2)UpdateData(FALSE)3) 加入以下语句:
    MSG msg;
    while(::PeekMessage(&msg, NULL ,0 ,0 , PM_NOREMOVE))
    {
    ::GetMessage(&msg, NULL, 0, 0);
    ::TranslateMessage(&msg);
    ::DispatchMessage(&msg);
    }4)将这些数据写入单片机这样会在写入单片机前将文字设置在Edit里!
      

  5.   

    呵呵,试了几位大虾的意见,好像只有fz_zhou(vcfan) 
    兄的成功了啊
    虽然还不是很明白,不过偶也不是专搞这些的,
    所以但求解决问题啦。
    谢谢各位!