VS CEdit SetLimitText 限制问题?

robert_duan 2008-11-27 10:30:18
VS2003 中动态数据交换DDX

void CXXDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_EDIT, m_EditControl);
}

BOOL CXXDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// TODO: Add extra initialization here
m_EditControl.SetLimitText(10); //限制文本长度

return TRUE;
// return TRUE unless you set the focus to a control
}

问题:
如果文本框中输入的全是英文字符, 限制是正常的.
如果输入的内容包含汉字, 限制就会出现问题. 输入的字符远远大于限制的字符.

例:
我设置 m_EditControl.SetLimitText(10);
输入: "123456789" 9个字符
再输入一个汉字, "我" 将会有11个符

请问这是什么问题?


...全文
771 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZSP95 2011-11-11
  • 打赏
  • 举报
回复
楼上说的很扯啊 我试验过了 跟xp界面风格根本没关系 ; 而且 我的一个程序 用的就是多字节字符集 却可以 以字符数进行计算 即限制10的话 : 输入的无论英文数字汉字全是 10 个 . 查了半天没找到问题所在

希望楼上有看到的可以继续研究下 .
cnzdgs 2008-11-27
  • 打赏
  • 举报
回复
在使用多字节字符集且不使用XP风格时,SetLimitText设置的是最大字节数;在使用Unicode字符集或使用XP风格时,SetLimitText设置的是最大字符数。
robert_duan 2008-11-27
  • 打赏
  • 举报
回复
我找到问题了, 出乎我的预料, 没想到,是XP界面风格导致的。
因为我的VS2003创建的工程, 界面按件风格全是灰色的, 前段时间我把界面改成XP界面风格, 才导致出现这个问题。
casale 2008-11-27
  • 打赏
  • 举报
回复
楼主的程序应该是其他地方有问题,刚才用VS2003试过,一个汉字占两个字符,如果限制是十个,已经有九个了,就不能再写入汉字了,复制粘贴也不行
robert_duan 2008-11-27
  • 打赏
  • 举报
回复
如果中文占二个,限制10个字符的话, 他应该只能输入五个汉字的。
我不知道这是什么问题
robert_duan 2008-11-27
  • 打赏
  • 举报
回复
楼上的.如果已经有个字节了.
在输入汉字是不会出来的.
如果我在 第9个字节上 粘贴5个汉字,都会显示出来. 结果将会是 19个字符
闪破风浪 2008-11-27
  • 打赏
  • 举报
回复
中文是双字节的字符,
处理时却是单字节处理,
双字节第二字节是“空”。。。
则,你的长度就是在有中文字符前的所有字符数目了。。。
而非所有输入字符字节。。。。
看明白了吧。。。
孤客天涯 2008-11-27
  • 打赏
  • 举报
回复
一个汉字占两个字节,你算算吧

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧