如何使得CEdit内容不可编辑?

sukermq 2004-03-25 09:29:46
请问:
如何使得在CEdit中输入内容超过一定字符数时,使得CEdit不可编辑?
经过测试:LimitText(int)以及SetReadOnly(false)不符合我的要求,
因为LimitText(int)会对CEdit里面的字符数进行计算后再来限制输入,但是我对字符串数的计算与系统的默认计算不同;而SetReadOnly(false)会使得CEdit变灰,所以请问有什么好方法没?
...全文
247 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
shadowWind 2004-07-13
  • 打赏
  • 举报
回复
mark
A_Qiao 2004-03-25
  • 打赏
  • 举报
回复
你的要求是否跟这位的一样?
http://expert.csdn.net/Expert/topic/2848/2848844.xml?temp=.2150385
sukermq 2004-03-25
  • 打赏
  • 举报
回复
倒,没人理哦!自己顶!
sukermq 2004-03-25
  • 打赏
  • 举报
回复
我对中文字符和英文字符都算作了2个字符,所以用LimitText(长度)是不行的。 fzd999(花差花差)能不能帮找个列子呀,或者具体点,谢谢了...
red-fly 2004-03-25
  • 打赏
  • 举报
回复
计算方法有什么不同?
不是固定长度吗?
那你就每计算一次看够不够,如果够长了,就调用LimitText(现在的长度)
fzd999 2004-03-25
  • 打赏
  • 举报
回复
子类化,重载WM_CHAR消息处理,内置一个计数器,响应一次加一,到了限定字数就……,注意要对back space进行特殊处理。
sukermq 2004-03-25
  • 打赏
  • 举报
回复
倒,CSDN这个破系统,我想结贴给分都不让,说什么程序错误,我晕哦:
Microsoft OLE DB Provider for SQL Server 错误 '80040e14'

Invalid column name 'use_Password'.

/expert/GiveTip.asp,行62
叫我怎么办??????????????????
sukermq 2004-03-25
  • 打赏
  • 举报
回复
是传值的时候有点问题,这样直接写是没问题的,因为我写了个函数把它封起来了,所以传递值的时候导致有些错误!
结贴,谢谢各位!
ymbymb 2004-03-25
  • 打赏
  • 举报
回复
你照我的方法应该可以的啊
if(count > 120)
{
count = 120;
m_Edit.SetWindowText(str.Left(pos));
}
这几句话就是为了将多余的字符去掉
sukermq 2004-03-25
  • 打赏
  • 举报
回复
大部分问题已经解决了,目前还有一个问题:
当我复制粘贴时,假设最大值是:120,目前我拷贝了80个数,然后我再粘贴80个数字,按照我的想法是:它应该只显示前120个数字,但是还是出现了多于的40个数,不知道该如何解决!
ymbymb 2004-03-25
  • 打赏
  • 举报
回复
你只要在OnChangeEdit中动态改变EDIT的最大字符数就可以了,下面的例子假设你希望最大10个字符,即10个汉字或10个字母.
void CTestDlg::OnChangeEdit1()
{
CString str;
m_Edit.GetWindowText(str);
int count = 0;
int pos = 0;
for(int i = 0; i < str.GetLength(); i++)
{
if((BYTE)str[i] < 0x80) count++;
else
{
count ++;
i++;
}
if(count == 10) pos = i;
}
if(count > 10)
{
count = 10;
m_Edit.SetWindowText(str.Left(pos));
}
m_Edit.SetLimitText(str.GetLength() + (10 - count)*2 );

}
不知道你加了多少分啊? 呵呵,越多越好!
sukermq 2004-03-25
  • 打赏
  • 举报
回复
帖子加分了,急用哦,请人指点......
最好详细点哦,谢谢了!
sukermq 2004-03-25
  • 打赏
  • 举报
回复
不一样哦,我需要这样算:
如果中英文都存在一个字符串里面,那么中文做2个字符算,英文也做2个字符算,这个我已经实现了,但是使用LimitText(int nMax)时,如果是手写输入,我现在可以用str.GetLength()获取实际的长度然后LimitText(nTrueLen);但是现在又有个问题是:当我复制粘贴时,如果剪贴板上的字符超过可以输入的范围时,会出现异常错误。该怎么办?

15,979

社区成员

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

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