您的位置:程序门 -> vc/mfc -> 界面



如何限制edit框内的输入内容。譬如说位数,0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


如何限制edit框内的输入内容。譬如说位数,0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f[已结贴,结贴人:redhgg1]
发表于:2007-09-12 12:14:32 楼主
aaaaaaaaaa
发表于:2007-09-12 12:36:591楼 得分:0
输入响应函数里判断,是否处于 '0 '- '9 ' ¦ ¦ 'a '- 'f '
发表于:2007-09-12 12:40:442楼 得分:1
定义一个edit变量系统本身有几种数据类型限制的
如是你需要输入特殊数据类型可以先将输入数据取出分析,不是你想要的数据类型提示重新输入也以通过自给edit实现
发表于:2007-09-12 12:47:163楼 得分:1
继承cedit写一个新类cmaskedit

在cmaskedit中重载onchar和onkeydown消息处理函数
屏蔽其他字符就可以了
发表于:2007-09-12 12:55:144楼 得分:1
en_change函数中判断最新输入的哪个字符满足你的要求,也可以实现.
发表于:2007-09-12 12:55:545楼 得分:0
在pretranslatemessage中截获消息,判断是否为要输入的字符,例如
if(   (   pmsg.message   ==   wm_keydown)   &&   ((     pmsg.wparam> '0 '   &&     pmsg.wparam < '9 '   )   ¦ ¦   (     pmsg.wparam> 'a '   &&     pmsg.wparam < 'z '   )))
而后做相应的处理
发表于:2007-09-12 12:59:476楼 得分:0
楼上的方法可行,如果不是用mfc的话,可以对edit进行子类化
发表于:2007-09-12 13:49:197楼 得分:0
vocanicy(刺客)  
appleboyecho(海纳百川,有容乃大;壁立千仞,无欲则刚)  
的方法都挺好的,但是能不能给点具体的啊。。。
发表于:2007-09-12 14:21:558楼 得分:1
同意猪的做法
发表于:2007-09-12 14:34:029楼 得分:0

楼上的代码漏洞很多!

1、pmsg.message   ==   wm_keydown     应改为     pmsg.message   ==   wm_char

      如果用   wm_keydown   ,那么向左右方向键不能用了;还有   shift   +   2   可以被接收,但内容是   @   符号,不符合要求。

2、pmsg.wparam> '0 '     应改为     pmsg.wparam> = '0 '     (大于等于0,后边都要改)
发表于:2007-09-12 14:42:4210楼 得分:0
if(   (   pmsg.message   ==   wm_char)   &&   ((     pmsg.wparam> = '0 '   &&     pmsg.wparam <= '9 '   )   ¦ ¦   (     pmsg.wparam> = 'a '   &&     pmsg.wparam <= 'f '   ) ¦ ¦ ¦ ¦   (     pmsg.wparam> = 'a '   &&     pmsg.wparam <= 'f '   )))

然后怎么办啊   。怎么设置输入的无效果呢。我是新手很白的。这么多人帮我     这20分怎么分啊。。郁闷
发表于:2007-09-12 15:23:1211楼 得分:4
然后怎么办啊   ?
上面这段已经将输入过滤了,不合要求的输入已经不会发给你的程序了.
发表于:2007-09-12 16:19:4012楼 得分:0
程序经过调试以后居然说   .wparam左边的东西要是class   或者struct结构
。。。我是不是很麻烦。。。
发表于:2007-09-12 16:26:3213楼 得分:0
pmsg->
发表于:2007-09-12 16:55:0314楼 得分:0
真好玩,用了以后鼠标也不能按了   太好玩了
发表于:2007-09-12 17:05:1215楼 得分:8

楼主,请看:

/////////////////////////////////////////////////////////

bool   cmy002dlg::pretranslatemessage(msg*   pmsg)  
{
//   todo:   add   your   specialized   code   here   and/or   call   the   base   class

if(pmsg-> message==wm_char)
{
if(pmsg-> wparam> '0 '&&pmsg-> wparam < '9 ')
return   false;
else
return   true;
}

return   cdialog::pretranslatemessage(pmsg);
}

/////////////////////////////////////////////////////////

在你的对话框中响应   pretranslatemessage   这个函数,然后写入以上代码,试试看。
发表于:2007-09-12 17:06:0916楼 得分:0
上边代码条件不全,如果达到要求,再增加条件。
发表于:2007-09-12 17:06:4517楼 得分:4
楼上的代码漏洞很多!

1、pmsg.message   ==   wm_keydown     应改为     pmsg.message   ==   wm_char

      如果用   wm_keydown   ,那么向左右方向键不能用了;还有   shift   +   2   可以被接收,但内容是   @   符号,不符合要求。
====================================================================
请教为什么左右方向键不能用呢?
我后面有判断条件,请指教。
发表于:2007-09-12 17:09:5718楼 得分:0
zaodt(至尊宝宝:我就在你身旁,关心永远不打烊!)
一下就能用,还是这样傻瓜版本的好!!!接分咯
发表于:2007-09-12 18:08:0719楼 得分:0

to:     appleboyecho(海纳百川,有容乃大;壁立千仞,无欲则刚)

我也不知道为什么,但是我试验过你的代码,确实不能用了,你试试看!
发表于:2007-09-12 18:43:3420楼 得分:0
好了好了,不就20分吗     吵啥啊
发表于:2007-09-13 10:51:5921楼 得分:0
呵呵


快速检索

最新资讯
热门点击