平的,还是垂直的)都会重新定位在开始的位置。
所以,如果想要让每次刷新时,滚动条的位置保留不动,那么就需要作些处理。
-------------------------------------------------------------------------
例如:
//计时器,让它每隔一定时间就刷新一次EditBox中的内容。
例如:
//计时器,让它每隔一定时间就刷新一次EditBox中的内容。
void XXX::OnTimer(UINT_PTR nIDEvent)
{
//设定要输出的内容
CString str;
m_str +="Line ==";
m_nLineCount++;
str.Format( "%4d", m_nLineCount );
m_str += str + "==";
m_str +="012345678901234567890123 456789012345678901234567 89\r\n";
//获取刷新前,水平滚动条和垂直滚动条的位置
m_position.x = m_edit1.GetScrollPos( SB_HORZ );
m_position.y = m_edit1.GetScrollPos( SB_VERT );
//获取水平滚动条的滚动范围
m_edit.GetScrollRange( SB_HORZ, &m_nMinHScroll , &m_nMaxHScroll );
m_flag++;
if( m_flag == 1 )
{
//获取第一行字符个数
maxLen = m_str.GetLength();
}
//刷新EditBox中的内容
m_edit.SetWindowTextA( m_str );
{
}
----------------------------------------------------------------------------
简单说明一下,由于CEditBox::LineScroll()函数是可以设置滚动内容的,但是由于其第2
个参数(一般情况下是缺省的)要求传入的是字符个数,即:将要水平滚动的字符个数,所以要
进行一下换算:
即可。