在自动换行设置的时候,要在EDIT控件的属性中选中"multiline"的属性和Auto_HScroll、Vertical scroll。 经过多次测试,总结出VC编辑框(EDIT)的自动换行与自动滚屏的方法。 方法一: (当EDIT映射到一CString时) //自动换行(其中m_String是EDIT筐所关联的CString对象) 此法只能做到自动换行,不会自动滚屏到最后一行。 方法二: (当EDIT映射到一EDIT时) 此法可以做到自动换行,并自动滚屏到最后一行。 以上,m_String、m_Edit.分别为给编辑框添加的成员变量;sNewString 为要显示的字符串 方法三: 到200行时将所有内容清空 int iLineNum=m_EditLog.GetLineCount(); 取自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./studio/showart.asp?id=443 ---------------------------------- ------------------------------------------------------ VC中EditBox怎么自动清空???http://topic.csdn.net/u/20080311/16/70b6c4af-0a1f-418c-b4d0-bb336ababb9b.html -------------------------------------------------------- 【MFC】关于EditBox中滚动条定位问题一般来说,如果EditBox中的内容是静态的,那么可以根据属性很容易地滑动滚动条。
(对于Dialog 来说可以设置其属性)
但是,如果EditBox中的内容是动态刷新的,那么每一次refresh后,滚动条(无论是水 平的,还是垂直的)都会重新定位在开始的位置。
所以,如果想要让每次刷新时,滚动条的位置保留不动,那么就需要作些处理。 -------------------------------------------------------------------------
例如: //计时器,让它每隔一定时间就刷新一次EditBox中的内容。 void XXX::OnTimer(UINT_PTR nIDEvent)
{ //设定要输出的内容 CString str; m_str +="Line =="; m_nLineCount++; str.Format( "%4d", m_nLineCount ); m_str += str + "=="; m_str +="01234567890123456789012345678901234567890123456789\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 ); //设定水平和垂直滚动条的位置(刷新前的位置)
if( m_nMaxHScroll != m_nMinHScroll ) { //这步换算直接影响到是否能定位水平滚动条刷新前的位置
int nChar = ( maxLen * m_position.x ) / (m_nMaxHScroll - m_nMinHScroll); m_edit1.LineScroll( m_position.y, nChar ); } else { m_edit1.LineScroll( m_position.y ); } CDialog::OnTimer(nIDEvent);
} ------------------------------------------------http://huagx770.spaces./blog/cns!C2B50FE280E36778!266.entry 个参数(一般情况下是缺省的)要求传入的是字符个数,即:将要水平滚动的字符个数,所以要
进行一下换算:
nChar = ( maxLen * m_position.x ) / (m_nMaxHScroll - m_nMinHScroll);
即可。 ----------------------------------------------------- MFC制作双缓冲无闪烁的字幕滚动条 来自: http://hi.baidu.com/jam12315/blog/item/63f4fe0902fb438ad1581bbf.html |
|