用下面的代码,在richEdit的最后添加一行.一般情况都能正确工作,最近搞了个用TabCtrl控制两个RichEdit,正在显示那个工作正常,隐藏那个老添加到四行时就会把第一行的第一个字符删掉.以后每添一行删一个.那位高手帮忙看看,谢了
int nLength = m_edit.GetWindowTextLength();
m_edit.SetSel(nLength + 1, nLength + 1);
m_edit.ReplaceSel(str);
nLength = m_edit.GetWindowTextLength();
m_edit.SetSel(nLength + 1, nLength + 1);
m_edit.PostMessage(WM_VSCROLL, SB_BOTTOM, 0);

解决方案 »

  1.   

    int nLength = m_edit.GetWindowTextLength(); 
    m_edit.SetSel(nLength + 1, nLength + 1); 
    m_edit.ReplaceSel(str); 
    nLength = m_edit.GetWindowTextLength(); 
    m_edit.SetSel(nLength + 1, nLength + 1); 
    m_edit.PostMessage(WM_VSCROLL, SB_BOTTOM, 0);把+1去掉看看。改成
    m_edit.SetSel(nLength, nLength); 
      

  2.   

    没有看到什么错误,我怀疑不是这段代码错误!
    如果怀疑这段代码错误,很简单,把这几句去掉,你看看效果,如果有错误,也是这几句话中那个有错误!
    nLength = m_edit.GetWindowTextLength();
    m_edit.SetSel(nLength + 1, nLength + 1);
    m_edit.PostMessage(WM_VSCROLL, SB_BOTTOM, 0);
    但是,我怀疑错误不在这儿!你看看其它的地方有使用到 m_edit的地方么?
      

  3.   

    其他的什么地方使用到了m_edit变量?
    是不是其他地方有什么问题?
      

  4.   

    没有,应该不是代码问题.估计是RichEdit的问题了.我还用过其它的方法都没对.
    m_lowEdit->SetSel(-1, -1);
    m_lowEdit->GetSel(cr);
    m_lowEdit->ReplaceSel(lpszChat);
    这也不对.算了,想了个办法,看不添加保存在一个string中,第一次激活时添加.就解决了.
      

  5.   

    我觉得不会出现这么大的BUG了,你还是好好调试一下了,我觉得是代码中有逻辑问题,而且很隐晦。
      

  6.   

    还是直接保存在一个string好了.