需要做一个类似Visual Studio里面的输出窗口,比如编译的时候
显示编译信息的那个窗口,那个窗口,比如如果你选中了一些东西
虽然还在继续编译,也就是不停地在窗口末尾添加字符串,但是你
选中的东西不会变,但是如果用普通方法实现在EDIT或RICHEDIT
里面添加字符串,就需要选中字符串,然后替换,但是这就破坏了
用户已经选择的东西,我需要的是这个OUTPUT窗口在末尾添加东西
但是不会改变选区.
怎么实现?

解决方案 »

  1.   

    用 richedit 在后面追加,就不影响前面的
    int   nLen=m_rich.GetWindowTextLength   ();   
      m_rich.SetSel(nLen,nLen);   
      m_rich.ReplaceSel("新追加的文本");   
      m_rich.ReplaceSel("\r\n");  揭帖给分
      

  2.   


    提醒一下, 如果是readonly的风格, 以上代码是无效的. 还是用SetWindowText吧
      

  3.   

    自己判断 GetSel 回来的是否有效, 无效则可以SetWindowText替换,  有效就把string存储起来 下次替换/滚动时替换
      

  4.   

    把string存储起来 下次替换/滚动时替换
      

  5.   

    不行啊,我要的在添加的同时不能改变当前已经选中的.
    比如
    当前选择的是 10,20
    但是如果这样替换
    int   nLen=m_rich.GetWindowTextLength   (); 
      m_rich.SetSel(nLen,nLen); 
      m_rich.ReplaceSel("新追加的文本"); 
      m_rich.ReplaceSel("\r\n"); 
    那选择的就边了.
    我要的是添加之后,选择的内容还是
    10,20添加不会改变选中的文本,我是这个意思.to2 楼:不是我结贴率低,你看看我一共问过几个问题,都没人能回答出来,不是不结贴。
    我估计这个也没什么能回答出来了
      

  6.   


    要判断后才替换. 先把string保存下来....
      

  7.   

    CHARRANGE cr;
    m_rich.GetSel(cr);
    int  nLen=m_rich.GetWindowTextLength  ();   m_rich.SetSel(nLen,nLen); 
      m_rich.ReplaceSel("新追加的文本"); 
      m_rich.ReplaceSel("\r\n"); 
    m_rich.SetSel(cr);