现在的位置: 首页 > 综合 > 正文

编辑控件中如何自动换行

2013年03月24日 ⁄ 综合 ⁄ 共 1056字 ⁄ 字号 评论关闭

      我们在使用编辑控件时经常碰到这样的问题,输入的文本长度大于控件所能显示的字符长度时,看不到后面的内容,如果编辑控件有自动水平滚动的样式时,可以拖动滚动条,但在没选择此样式时,就没办法看到后面的内容了。这个在记事本和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的内容

抱歉!评论已关闭.