编辑控件中如何自动换行

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值