你第一种写法 Old_str = str1; 那么每次读完一行SetWindowText都是设置内容为当前读的那行第二种写法 Old_str += str1; 那么每次读完一行SetWindowText都是设置内容为前面所有行的内容你的逻辑就是这样  结果就是这样有什么问题?

解决方案 »

  1.   

    SetWindowText 不是追加 是设置标题 这些传什么 标题就更新为什么...
      

  2.   

    while( file.ReadString( str1 ) )
        {
           <span style="color: #FF0000;">Old_str += str1;</span>
           Old_str += "\r\n";
    //       GetDlgItem( IDC_EDIT1 )->SetWindowText( Old_str );
           }
           GetDlgItem( IDC_EDIT1 )->SetWindowText( Old_str );
      

  3.   


    大侠 ,为什么呢? 如果我在循环中 PostMessage 给编辑框 怎么样?还是不理?
      

  4.   


    这位大侠, 为什么就不能 读一行  SetWindowText就 设入一行到编辑框呢? 难道有缓存机制?
      

  5.   

    不是 “不能 读一行  SetWindowText” 而是效率 问题, 因为 读文件 这么快, 人 眼 看 不过来的。
      

  6.   

    那为什么我打了断点 ,然后再看  编辑框 始终没有第一行 内容 就算是 跑到了SetMessageText这行,还是不会有第一行显示 都没有 ,这个跟效率没关系了吧 , 然后循环第二次  再调用第二行 SetMessageText有第二行内容
      

  7.   

           //Old_str = str1 ;// 以前的 丢了 !!!!
           Old_str += str1;
           Old_str += "\r\n";
      

  8.   

    我打的断点,第一次 到SetWindowText 时 编辑框 没内容, 然后又到循环while断点处 然后才下来 ,这之前 跟覆盖没关系 ,我都执行第二次ReadString  怎么会丢呢。。呵呵, 我意思是 在执行 第一次readString  时 就已经  在编辑框没有内容。。不信你试试
      

  9.   

    SetWindowText没有缓存的说法,之所以没有循环一次就显示一次的内容,是因为UI线程还在循环中,没有去自绘,所以没有显示出来。
    while( file.ReadString( str1 ) )
    {
    Old_str += str1;
    Old_str += "\r\n";
    GetDlgItem( IDC_EDIT1 )->SetWindowText( Old_str );
    GetDlgItem( IDC_EDIT1 )->RedrawWindow();
    }
      

  10.   

    只能说楼主没表达好。
    SetWindowText 是向IDC_EDIT1发送的一个WM_SETTEXT消息,并不立即处理,想要立马显示可用15楼的方法调用RedrawWindow。
    但是第一种方法你能看到的也怕是只有456,因为读取出123再显示再读取456再显示这个过程很快,你根本看不到123。
    或许楼主可以用ListBox来显示。
      

  11.   


    对,UI线程 还在循环里!就是这样!大侠,UI线程可不可以理解为这个应用的线程?