5307|9

73

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

CEdit的输入问题 [复制链接]

各位大侠好,我现在想控制编辑框的输入只能是数字和点,重写了OnChar事件,可是我发现在设备上调试的时候当我输入数字比如1,2,3和字母如a,b,c等时根本不会触发OnChar事件,而如果我点击Backspace、Enter等这些键时则会触发OnChar事件,但是还有一点就是我在模拟器上调试时就可以触发,通过写OnChar事件能很好的控制,请问各位大虾这是怎么回事呢,我该怎么控制呢,(我开发用的是PPC2003,VS2005,调试的设备是多普达e806c,Windows Mobile5的系统)

最新回复

我现在测试了一下,在输入0-9,a-z等字母时可以触发OnChar消息,可是我跟踪发现在输入1-9和a-z时,nChar的值总是为0,下面是重写的OnChar的代码 void   CNumEdit::OnChar(UINT   nChar,   UINT   nRepCnt,   UINT   nFlags)          {        //如果是0-9或"."或者删除键则接收            if((nChar>='0'&&nChar  详情 回复 发表于 2008-6-4 11:05
点赞 关注

回复
举报

87

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
试试keydown事件
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
那你应该新建立一个CEdit的派生类,然后重写了OnChar事件
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

4
 
我是新建的CEdit的派生类
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(中级)

5
 
Lenux大侠,如果我用KeyDown能捕获到的话,该如何处理呢
 
 
 

回复

93

帖子

0

TA的资源

一粒金砂(初级)

6
 
nChar
Contains the character code value of the key.
nRepCnt
Contains the repeat count, the number of times the keystroke is repeated when user holds down the key.
nFlags
Contains the scan code, key-transition code, previous key state, and context code, as shown in the following list:
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

7
 
我发现我捕获到nChar的值都是229呢,请指点
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

8
 
For IBM Enhanced 101- and 102-key keyboards, enhanced keys are the right ALT and the right CTRL keys on the main section of the keyboard; the INS, DEL, HOME, END, PAGE UP, PAGE DOWN, and arrow keys in the clusters to the left of the numeric keypad; and the slash (/) and ENTER keys in the numeric keypad. Some other keyboards may support the extended-key bit in nFlags.

This method is called by the framework to allow your application to handle a Windows CE message. The parameters passed to your function reflect the parameters received by the framework when the message was received. If you call the base-class implementation of this function, that implementation will use the parameters originally passed with the message and not the parameters you supply to the function.

 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

9
 
试试能不能通过return true;或者 其它的表示系统不用处理该消息的办法
来让不需要的字符不能输入。

wparam就是输入字符吧
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

10
 
我现在测试了一下,在输入0-9,a-z等字母时可以触发OnChar消息,可是我跟踪发现在输入1-9和a-z时,nChar的值总是为0,下面是重写的OnChar的代码
void   CNumEdit::OnChar(UINT   nChar,   UINT   nRepCnt,   UINT   nFlags)         
{   
    //如果是0-9或"."或者删除键则接收       
    if((nChar>='0'&&nChar<='9')||(nChar=='.')||(nChar==0x08)||(nChar==0x10))
    {   
        CEdit::OnChar(nChar,nRepCnt,nFlags);                 
    }      
    else                
    return;          
}
我接收到的0-9和a-z的nChar值都为0,所以不执行CEdit::OnChar(nChar,nRepCnt,nFlags);语句,但是输入框里还是显示了输入的字符,这是怎么回事呢?它是在哪里处理了?
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表