CE5 CEidt OnChar函数不响应

ttyugg   2009-12-28 16:58 楼主
事情是这样的,
我原来在ce4.2上做的程序,对edit输入有限制,限制的方法是重载CEdit为CImputEdit类,在其中重载OnChar,
在把使用限制的edit定义处改为CImputEdit;是限制成功的.
现在我把程序拿到ce5上运行,发事Onchar函数没进去,,,,,
但退格等有些按键有能进去,好象是没响应WM_CHAR消息
软件盘输入...
请大家帮忙解决下..
谢谢

回复评论 (8)

响应 EC_CHANGE 不可以吗
点赞  2009-12-28 17:50
CE4.2的程序在CE5.0上不用修改就能直接跑的,窗口机制也一样。
WM_CHAR不是键盘产生的,而是TranslateMessage函数对WM_KEYDOWN进行转换而产生的一个消息。可以用remote sky跟一下应用程序的消息。看看WM_CHAR到底有没有产生。
点赞  2009-12-28 19:36
帮顶!
点赞  2009-12-28 22:30
把那几个控件删除。。再重新做一下。。
clean

rebuild
点赞  2009-12-29 09:52
问题有新的发现,,,
是这样的,我在CE5中加入了双拼输入,
程序对软键盘的消息是响应的,但对双拼输入哪个面板的消息是不响应的,,
上面的消息指WM_CHAR WM_KEYDOWN
但双拼的面板却响应EN_CHANGE

帮帮想想吧,谢谢

EN_CHANGE 来控制输入,不太好吧,,先显示输入,在删除错误输入.
点赞  2009-12-29 10:30
SPY查看消息结果
软键盘:WM_LBUTTONDOWN WM_SETCURSOR WM_MOUSEMOVE
WM_CAPTRUECHANGE WM_LBOTTONUP WM_MOUSEMOVE

双拼输入法WM_LBUTTONDOWN WM_SETCURSOR WM_USER+1001 WM_USER+1001 WM_CAPTRUECHANGE WM_LBOTTONUP MOUSEMOVE WM_USER+1001

我点的是a

点赞  2009-12-29 10:53
事情是这样的:
edit接收到的消息
软键盘与双盘输入哪个键盘是不一样的,
双拼时的WM_KEYDOWN 中没有键值,而且没有WM_CHAR,
使得ONCHAR无法控制输入,
这个可能与PB定制或BSP,oem有关吧(不太清楚)
我的解决办法是:edit的PreTranslateMessage中干掉WM_KEYDOWN使得不显示,
在接收到WM_KEYUP时(这个是有键值的),PostMessage WM_CHAR WM_KEYDOWN(加上键值)

另外:ce中双拼输入法调用时,小面板(就是五笔哪个小盘)不显示在当前窗口中,导致无法选择字,
解决的办是:在窗口中加个ListControl,为什么也不清楚,但能解决问题

总结一点,希望对需要的人有帮助.
点赞  2009-12-31 10:25
不错。。。。
有帮助!
点赞  2010-1-6 15:24
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复