三年前做一个辅助程序的时候用到MFC的CEdit做一个滚动窗口,在客户不点击选择光标的时候,可以自动滚动,但是一旦鼠标点击了光标就出现日志显示乱了
奈何一直都没法解决
先贴上关键代码
void CLPC1768_UpgradeToolDlg::ShowEditLog(CString m_str)
{
static int ipos = 0;
CTime time = CTime::GetCurrentTime();
CString sTime = time.Format(_T("%H:%M:%S "));
m_str = sTime + m_str + L"\r\n";
//m_EditLog.LineScroll(m_EditLog.GetLineCount()); //永远滑动到最下面
m_EditLog.SetSel(-1, -1, FALSE); //nstart = -1表示取消所有选择
int iTextLen = m_EditLog.GetWindowTextLength();
m_EditLog.SetSel(iTextLen, iTextLen, FALSE);
m_EditLog.SetFocus(); //移动光标到最后
m_EditLog.ReplaceSel(m_str); //这个函数还是在光标的位置书写
m_EditLog.LineScroll(m_EditLog.GetLineCount()); //可用于水平滚动所有行最后一个字符,这只是设置edit进行滚动
}