VC++ edit 编辑框自动换行

本文介绍了在VC++中实现编辑框自动换行的三种方法,包括基本设置、静态换行及动态换行技术。通过调整控件属性与编程实现,确保编辑框在文本过长时能自动换行并保持良好的视觉效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

VC++ edit 编辑框自动换行
2011-02-10 14:20

1、最基本的:把水平自动滚动关掉, 垂直自动滚动打开  

 

2、在用户在Edit框框中输入数据时,当CString > 30 时,令其自动换到下一行。

这个你可以在它的属性里面Styles ->Multiline这样项选择上,还有一项Want return
然后就可以加入你的换行语句了/r/n就行了

 

在自动换行设置的时候,要在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 为要显示的字符串

使用上面两种方法是要注意,他们只使用于静态的换行,如果要想实现动态换行,也就是说使用编辑框输入的时候,如果输入的字符串超过了编辑框的宽度,这时候就换行,则要使用第三种方法

方法三:m_EventEdit是与编辑框关联的控件变量,m_EventString是与编辑框关联的字符串变量

CRect EditRect(0,0,0,0),FontRect(0,0,0,0);
int EditWidth=0;
int FontWidth=0;
m_EventEdit.GetRect(&EditRect);
EditWidth=EditRect.Width();

CClientDC dc(this);
NONCLIENTMETRICS ncm;
ncm.cbSize = sizeof(NONCLIENTMETRICS);
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(ncm), &ncm, 0);

CFont font;
font.CreateFontIndirect(&ncm.lfMessageFont);
// 将字体选进DC
CFont* pOldFont = dc.SelectObject(&font);
// 计算文本大小
UpdateData(TRUE);
dc.DrawText(m_EventString, FontRect, DT_CALCRECT);
// 回复旧字体-这是必须的
dc.SelectObject(pOldFont);

FontWidth=FontRect.Width();

//如果字符串宽度大于编辑框宽度,则换行
if(FontWidth>=EditWidth)
{
   m_EventString+="/r/n";
        //   Add   soft   line-break   breaks.  
        m_EventEdit.FmtLines(TRUE);  
        //   Dump   the   text   of   the   edit   control.  
        afxDump   <<   m_EventString;
        //   Remove   soft   line-break   breaks.  
        m_EventEdit.FmtLines(FALSE);
}

原文地址:http://hi.baidu.com/laoyang1018/blog/item/4bf9c2ce5f35491092457e85.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值