2023年12月27日发(作者:)
VC编辑框实现自动换行
在自动换行设置的时候,要在EDIT控件的属性中选中"multiline"的属性和Auto_HScroll、Vertical scroll。
经过多次测试,总结出VC编辑框(EDIT)的自动换行与自动滚屏的方法。
方法一: (当EDIT映射到一CString时)
m_String = m_String + sNewString + "rn"
//自动换行(其中m_String是EDIT筐所关联的CString对象)
UpdateData(false);
此法只能做到自动换行,不会自动滚屏到最后一行。
方法二: (当EDIT映射到一EDIT时)
m_(-1, -1); //自动滚屏(其中m_Edit是EDIT筐所关联的EDIT控制对象)
m_eSel(sNewString+"rn"); //自动换行
此法可以做到自动换行,并自动滚屏到最后一行。
以上,m_String、m_Edit.分别为给编辑框添加的成员变量;sNewString 为要显示的字符串
使用上面两种方法是要注意,他们只使用于静态的换行,如果要想实现动态换行,也就是说使用编辑框输入的时候,如果输入的字符串超过了编辑框的宽度,这时候就换行,则要使用第三种方法
方法三:m_EventEdit是与编辑框关联的控件变量,m_EventString是与编辑框关联的字符串变量
CRect EditRect(0,0,0,0),FontRect(0,0,0,0);
int EditWidth=0;
int FontWidth=0;
m_t(&EditRect);
EditWidth=();
CClientDC dc(this);
NONCLIENTMETRICS ncm;
= sizeof(NONCLIENTMETRICS);
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(ncm), &ncm, 0);
CFont font;
FontIndirect(&ageFont);
// 将字体选进DC
CFont* pOldFont = Object(&font);
// 计算文本大小
UpdateData(TRUE);
xt(m_EventString, FontRect, DT_CALCRECT);
// 回复旧字体-这是必须的
Object(pOldFont);
FontWidth=();
//如果字符串宽度大于编辑框宽度,则换行
if(FontWidth>=EditWidth)
{
m_EventString+="rn";
// Add soft line-break breaks.
m_es(TRUE);
// Dump the text of the edit control.
afxDump << m_EventString;
// Remove soft line-break breaks.
m_es(FALSE);
}
来自: /guxue365/blog/item
发布者:admin,转转请注明出处:http://www.yc00.com/web/1703643316a1307670.html
评论列表(0条)