标签:
在自动换行设置的时候,要在EDIT控件的属性中选中"multiline"的属性和Auto_HScroll、Vertical scroll。
经过多次测试,总结出VC编辑框(EDIT)的自动换行与自动滚屏的方法。
方法一: (当EDIT映射到一CString时)
m_String = m_String + sNewString + "\r\n"
//自动换行(其中m_String是EDIT筐所关联的CString对象)
UpdateData(false);
此法只能做到自动换行,不会自动滚屏到最后一行。
方法二: (当EDIT映射到一EDIT时)
m_Edit.SetSel(-1, -1); //自动滚屏(其中m_Edit是EDIT筐所关联的EDIT控制对象)
m_Edit.ReplaceSel(sNewString+"\r\n"); //自动换行
此法可以做到自动换行,并自动滚屏到最后一行。
以上,m_String、m_Edit.分别为给编辑框添加的成员变量;sNewString 为要显示的字符串
方法三: 到200行时将所有内容清空
1 int iLineNum=m_EditLog.GetLineCount(); 2 if(iLineNum<=200) 3 { 4 m_EditLog.SetSel(-1, -1); 5 m_EditLog.ReplaceSel(str+"\r\n\r\n"); 6 } 7 else 8 { 9 m_EditLog.SetSel(0, -1); 10 m_EditLog.Clear(); 11 12 }
取自msdn
void SetSel( int nStartChar, int nEndChar, BOOL bNoScroll = FALSE );
Parameters
nStartChar
Specifies the starting position. If nStartChar is 0 and nEndChar is –1, all the text in the edit control is selected. If nStartChar is –1, any current selection is removed.
nEndChar
Specifies the ending position.
http://www.pcming.com/studio/showart.asp?id=443
----------------------------------
------------------------------------------------------
VC中EditBox怎么自动清空???http://topic.csdn.net/u/20080311/16/70b6c4af-0a1f-418c-b4d0-bb336ababb9b.html
--------------------------------------------------------
1 //计时器,让它每隔一定时间就刷新一次EditBox中的内容。 2 void XXX::OnTimer(UINT_PTR nIDEvent) 3 { 4 //设定要输出的内容 5 CString str; 6 m_str +="Line =="; 7 m_nLineCount++; 8 str.Format( "M", m_nLineCount ); 9 m_str += str + "=="; 10 m_str +="01234567890123456789012345678901234567890123456789\r\n"; 11 12 //获取刷新前,水平滚动条和垂直滚动条的位置 13 m_position.x = m_edit1.GetScrollPos( SB_HORZ ); 14 m_position.y = m_edit1.GetScrollPos( SB_VERT ); 15 16 //获取水平滚动条的滚动范围 17 m_edit.GetScrollRange( SB_HORZ, &m_nMinHScroll , &m_nMaxHScroll ); 18 m_flag++; 19 if( m_flag == 1 ) 20 { 21 //获取第一行字符个数 22 maxLen = m_str.GetLength(); 23 } 24 25 //刷新EditBox中的内容 26 m_edit.SetWindowTextA( m_str ); 27 //设定水平和垂直滚动条的位置(刷新前的位置) 28 if( m_nMaxHScroll != m_nMinHScroll ) 29 { 30 //这步换算直接影响到是否能定位水平滚动条刷新前的位置 31 int nChar = ( maxLen * m_position.x ) / (m_nMaxHScroll - m_nMinHScroll); 32 m_edit1.LineScroll( m_position.y, nChar ); 33 } 34 else 35 { 36 m_edit1.LineScroll( m_position.y ); 37 } 38 CDialog::OnTimer(nIDEvent); 39 }
----http://huagx770.spaces.live.com/blog/cns!C2B50FE280E36778!266.entry
简单说明一下,由于CEditBox::LineScroll()函数是可以设置滚动内容的,但是由于其第2
标签:
原文地址:http://www.cnblogs.com/it-duit/p/5663041.html