for question #1 Have you tried the LineScroll() member function ? For example, after UpdateData(FALSE); int nVis = m_edit1c.GetFirstVisibleLine(); int nscroll = m_edit1c.GetLineCount() - nVis; m_edit1c.LineScroll(nscroll); (assuming that you have a control variable, m_edit1c, associated with the Rich edit control)