当前位置:  开发笔记 > 开发工具 > 正文

CEdit控制最大长度?(以字符显示)

如何解决《CEdit控制最大长度?(以字符显示)》经验,为你挑选了2个好方法。

MFC中CEdit控件中包含的文本字符串的最大长度是多少?在任何地方记录角色30001之后尝试添加角色时,我会发出一声嘟嘟声?我可以在CEdit中显示更长的文本吗?我应该使用另一个控件吗?

正如"Windows程序员"在下面所说,当用户键入时,文本长度限制与我们使用SetWindowText以编程方式设置文本时不一样.在任何地方都没有提到以编程方式设置文本的限制.用户输入的默认文本lentgth限制是错误的.(见下面我自己的帖子).

我猜测在调用pEdit-> SetLimitText(0)之后,编程和用户输入文本长度的限制都是7FFFFFFE字节.我对吗?

在vista中,当将超过40000个字符的文本粘贴到CEdit中时,它变得没有响应.如果我先前调用了SetLimitText(100000)并不重要.



1> rec..:

当我在vista中提到单行CEdit控件的默认大小时,我发现文档是错误的.

我运行了这段代码:

CWnd* pWnd = dlg.GetDlgItem(nItemId);
CEdit *edit = static_cast(pWnd); //dynamic_cast does not work
if(edit != 0)
{
    UINT limit = edit->GetLimitText(); //The current text limit, in bytes, for this CEdit object.
    //value returned: 30000 (0x7530)
    edit->SetLimitText(0);
    limit = edit->GetLimitText();
    //value returned: 2147483646 (0x7FFFFFFE) 
}

文件说明:

在调用EM_SETLIMITTEXT之前,用户可以在编辑控件中输入的文本量的默认限制为32,767个字符.

这显然是错的.


实际测试每次都会打败文档!

2> ryan_s..:

您可以通过在控件上调用CEdit :: GetLimitText()来找出控件的最大值.这将返回字符数据的最大大小(以字节为单位).您可以使用CEdit :: SetLimitText()函数更改最大大小.

SetLimitText()函数等效于发送EM_SETLIMITTEXT消息.该消息的文档给出了可以使用的最大大小,但由于这些是明天可能会破坏的MSDN链接,我将复制相关信息:)

UINT参数被解释为:

用户可以输入的最大TCHAR数.对于ANSI文本,这是字节数; 对于Unicode文本,这是字符数.此数字不包括终止空字符.丰富的编辑控件:如果此参数为零,则文本长度设置为64,000个字符.

编辑Windows NT/2000/XP上的控件:如果此参数为零,则单行编辑控件的文本长度设置为0x7FFFFFFE,多行编辑控件的文本长度设置为-1.

编辑Windows 95/98/Me上的控件:如果此参数为零,则单行编辑控件的文本长度设置为0x7FFE字符,多行编辑控件的文本长度设置为0xFFFF.

另外,从备注部分:

在调用EM_SETLIMITTEXT之前,用户可以在编辑控件中输入的文本量的默认限制为32,767个字符.

编辑Windows NT/2000/XP上的控件:对于单行编辑控件,文本限制为0x7FFFFFFE字节或wParam参数的值,以较小者为准.对于多行编辑控件,此值为-1个字节或wParam参数的值,以较小者为准.

编辑Windows 95/98/Me上的控件:对于单行编辑控件,文本限制为0x7FFE字节或wParam参数的值,以较小者为准.对于多行编辑控件,此值为0xFFFF字节或wParam参数的值,以较小者为准.

我假设它们的意思是0xFFFFFFFF而不是第二段中的-1 ......

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有