我们在使用编辑控件时经常碰到这样的问题,输入的文本长度大于控件所能显示的字符长度时,看不到后面的内容,如果编辑控件有自动水平滚动的样式时,可以拖动滚动条,但在没选择此样式时,就没办法看到后面的内容了。这个在记事本和UltraEdit等程序中都有一个功能选项是自动换行。
下面就具体介绍如何实现这个功能:
第一步:如图将红色框中的选项打上钩
第二步:添加一CEdit类型变量如 CEdit m_myEdit对应到该控件
第三步:初始化该控件
// Limit the number of characters to be the maximum number visible.
// Get the text metrics for the edit; needed for the
// average character width.
TEXTMETRIC tm;
CDC* pDC = m_CommandEdit.GetDC();
pDC->GetTextMetrics(&tm);
m_CommandEdit.ReleaseDC(pDC);
CRect r;
m_CommandEdit.GetRect(&r);
m_CommandEdit.LimitText(r.Width()/tm.tmAveCharWidth);
第四步:添加一函数实现在该控件中显示内容,如下
void CCoordView::DisplayTipText(CString str)
{
CString str1;
m_CommandEdit.GetWindowText(str1);
if(str1 != "")
str1 += "\r\n";
int nLength = m_CommandEdit.GetLimitText();
int nstrLen = strlen(str.GetBuffer(256));
if(nstrLen > nLength)
{
CString str2 = str.Left(nLength);
CString str3 = str.Right(nstrLen - nLength);
str1 += str2;
str1 += "\r\n";
str1 += str3;
}else
str1 += str;
m_CommandEdit.SetWindowText(_T(str1));
m_CommandEdit.LineScroll(m_CommandEdit.GetLineCount(), 0);
}
以上内容希望对大家有所帮助,有什么不对的地方也请大家指出。
参考msdn的内容
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
上传的附件: