如何限制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
...全文
785 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanglin5131421 2007-09-13
  • 打赏
  • 举报
回复
呵呵
wltg2001 2007-09-12
  • 打赏
  • 举报
回复
楼上的方法可行,如果不是用MFC的话,可以对EDIT进行子类化
appleboyecho 2007-09-12
  • 打赏
  • 举报
回复
在PreTranslateMessage中截获消息,判断是否为要输入的字符,例如
if( ( pMsg.message == WM_KEYDOWN) && (( pMsg.wParam>'0' && pMsg.wParam<'9' ) || ( pMsg.wParam>'A' && pMsg.wParam<'Z' )))
而后做相应的处理
shanhqk 2007-09-12
  • 打赏
  • 举报
回复
EN_Change函数中判断最新输入的哪个字符满足你的要求,也可以实现.
vocanicy 2007-09-12
  • 打赏
  • 举报
回复
继承CEdit写一个新类CMaskEdit

在CMaskEdit中重载OnChar和OnKeyDown消息处理函数
屏蔽其他字符就可以了
qeq2008 2007-09-12
  • 打赏
  • 举报
回复
定义一个EDIT变量系统本身有几种数据类型限制的
如是你需要输入特殊数据类型可以先将输入数据取出分析,不是你想要的数据类型提示重新输入也以通过自给EDIT实现
JerryHsiao 2007-09-12
  • 打赏
  • 举报
回复
输入响应函数里判断,是否处于'0'-'9'||'A'-'F'
redhgg1 2007-09-12
  • 打赏
  • 举报
回复
好了好了,不就20分吗 吵啥啊
zaodt 2007-09-12
  • 打赏
  • 举报
回复

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

我也不知道为什么,但是我试验过你的代码,确实不能用了,你试试看!
redhgg1 2007-09-12
  • 打赏
  • 举报
回复
zaodt(至尊宝宝:我就在你身旁,关心永远不打烊!)
一下就能用,还是这样傻瓜版本的好!!!接分咯
appleboyecho 2007-09-12
  • 打赏
  • 举报
回复
楼上的代码漏洞很多!

1、pMsg.message == WM_KEYDOWN 应改为 pMsg.message == WM_CHAR

如果用 WM_KEYDOWN ,那么向左右方向键不能用了;还有 Shift + 2 可以被接收,但内容是 @ 符号,不符合要求。
====================================================================
请教为什么左右方向键不能用呢?
我后面有判断条件,请指教。
zaodt 2007-09-12
  • 打赏
  • 举报
回复
上边代码条件不全,如果达到要求,再增加条件。
zaodt 2007-09-12
  • 打赏
  • 举报
回复

楼主,请看:

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

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 这个函数,然后写入以上代码,试试看。
redhgg1 2007-09-12
  • 打赏
  • 举报
回复
真好玩,用了以后鼠标也不能按了 太好玩了
向立天 2007-09-12
  • 打赏
  • 举报
回复
pMsg->
redhgg1 2007-09-12
  • 打赏
  • 举报
回复
程序经过调试以后居然说 .wParam左边的东西要是CLASS 或者STRUCT结构
。。。我是不是很麻烦。。。
wltg2001 2007-09-12
  • 打赏
  • 举报
回复
然后怎么办啊 ?
上面这段已经将输入过滤了,不合要求的输入已经不会发给你的程序了.
redhgg1 2007-09-12
  • 打赏
  • 举报
回复
if( ( pMsg.message == WM_CHAR) && (( pMsg.wParam>='0' && pMsg.wParam<='9' ) || ( pMsg.wParam>='A' && pMsg.wParam<='F' )|||| ( pMsg.wParam>='a' && pMsg.wParam<='f' )))

然后怎么办啊 。怎么设置输入的无效果呢。我是新手很白的。这么多人帮我 这20分怎么分啊。。郁闷
zaodt 2007-09-12
  • 打赏
  • 举报
回复

楼上的代码漏洞很多!

1、pMsg.message == WM_KEYDOWN 应改为 pMsg.message == WM_CHAR

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

2、pMsg.wParam>'0' 应改为 pMsg.wParam>='0' (大于等于0,后边都要改)
sinja1983 2007-09-12
  • 打赏
  • 举报
回复
同意猪的做法
加载更多回复(1)

15,978

社区成员

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

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