首页
社区
课程
招聘
[旧帖] [原创]编辑控件中如何自动换行 0.00雪花
发表于: 2009-6-19 06:31 1155

[旧帖] [原创]编辑控件中如何自动换行 0.00雪花

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

[课程]Android-CTF解题方法汇总!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 55
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
那个……不是想打击你……事实上用edit窗口类时,选定多行编辑样式和自动竖直滚动的话直接会自动换行的……
2009-6-19 13:29
0
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
呵呵,看来你是个初学者了,你还是去动动手,不用先来打击我了。
2009-6-23 07:25
0
雪    币: 55
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我确实动过手啊……而且写过好几个用了edit控件的程序……我指的是使用CreateWindowEx函数直接创建的edit类。没用过C++的那个类,不知道是不是不一样。
2009-6-23 12:46
0
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
呵呵,我们没对上路,我使用的是mfc,在vc集成开发环境中做的,用win32函数直接写控件倒是不熟,哈哈,见笑了。
2009-7-1 23:10
0
雪    币: 179
活跃值: (26)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
6
楼主你试试把Auto HScroll去掉,这个是自动水平滚动,你把这个取消以后就不会出现你说的内容过长以后后面的会看不到的情况了。超出长度以后会自动换行。
2009-7-2 10:08
0
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
7
支持一下....
2009-7-2 10:21
0
雪    币: 364
活跃值: (1586)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
支持,没有这复杂
2009-7-2 23:05
0
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
这倒是没试过,一个简单问题弄得这么复杂,谢谢了
2009-7-7 17:19
0
游客
登录 | 注册 方可回帖
返回
//