CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

紧急!共有200分奉送!中文输入法的软键盘是如何实现的?

楼主beantong(beantong)2001-04-16 09:45:00 在 VC/MFC / 基础类 提问

我编了一个类似输入法软键盘的程序,目前可以正常输入英文,但是当    
  输入中文时,发现向网页中输入就会出问题,原因是由于我的程序采用    
  焦点转换的方法,用户点击模拟键盘后,程序需要重新定位到网页中待输入的    
  地点,SetFocus(),但这样的话,原先已经输入的中文拼音部分就会消失    
  (这个问题在向一般窗口的对话框中输入就没有问题)。    
  今天发现,使用输入法的软键盘就没有这个问题,原因是当点击软键盘种的    
  按钮时,就不会出现待输入地点和软键盘之间的焦点变换。可是我不知道    
  如何实现这个功能?    
   
  这个问题我在http://www.csdn.net/expert/topic/95/95898.shtm和http://www.csdn.net/expert/topic/94/94455.shtm中已经问道,可是没有人给出回答,这里再次提问一次,一共200多分!  
   
  谢谢! 问题点数:80、回复次数:15Top

1 楼vcbear(http://vcbear.mblogger.cn)回复于 2001-04-16 09:55:00 得分 30

你点击软键盘的时候,软键盘是不获得焦点的,可能本身是一个disable类型的窗体。  
  但是他可以获得点击信息,用的技术很大路:Hook.Hook到消息后,自己处理一下,  
  在界面上模拟有焦点窗口的动作,比如移动,键按下...等等。  
  我为什么知道这个,因为我在WinCE下用软键盘的时候,它频繁的KeyboardHook,MouseHook  
  出错。Top

2 楼vcbear(http://vcbear.mblogger.cn)回复于 2001-04-16 09:56:00 得分 0

错了,是WinMe   的软键盘。Top

3 楼beantong(beantong)回复于 2001-04-16 10:25:00 得分 0

运行环境是win98Top

4 楼vcbear(http://vcbear.mblogger.cn)回复于 2001-04-16 10:31:00 得分 0

都是一样的。Top

5 楼bobqi(灰冷)回复于 2001-04-16 10:38:00 得分 0

在vchelp上有一个软键盘的例子,你可以看一下Top

6 楼beantong(beantong)回复于 2001-04-16 10:43:00 得分 0

我就是参考了那个例子作的,现在的问题那个例子也没有办法解决。  
  主要问题就是出在那个程序的ReleaseFocus函数的SetFocus()上,导致无法输入拼音。Top

7 楼vcbear(http://vcbear.mblogger.cn)回复于 2001-04-16 10:49:00 得分 0

不要让你的程序得到焦点,就是说不让你的对象程序失去焦点,所以要用Hook。那个例子路子本来就不对。Top

8 楼In355Hz(好象一条狗)回复于 2001-04-16 11:01:00 得分 50

vcbear说的对,你用spy看看就知道了,软键盘是一个有WS_DISABLED属性的窗体,所以点击软键盘不会导致它获得焦点(当然本身也不会获得消息)。你在这之外用一个鼠标钩子挂在创建软键盘窗体的线程上(不用全局的),在获得点击消息WM_LBUTTONUP的时候,检查一下鼠标的位置是不是位于软键盘的某个键上,再处理成相应的键盘输入消息就可以了。  
  Top

9 楼In355Hz(好象一条狗)回复于 2001-04-16 11:11:00 得分 0

错了,钩子是挂在目标窗体的线程上。Top

10 楼beantong(beantong)回复于 2001-04-16 11:13:00 得分 0

有没有实现的具体例子,或者是hook的实现例子,小弟没用过。  
  谢谢!Top

11 楼vcbear(http://vcbear.mblogger.cn)回复于 2001-04-16 11:33:00 得分 0

修行在个人。  
   
  钩子的例子这里太多了。用“钩子”或“Hook”作关键字搜索一下吧。  
  Top

12 楼beantong(beantong)回复于 2001-05-04 11:33:00 得分 0

问题解决,谢谢!Top

13 楼tianya(天涯)回复于 2001-05-15 17:35:00 得分 0

beantong   你好,我现在也想做个类似软键盘的程序,希望能得到你的帮助,我的程序是这样的,,     有一个编辑控件,当点击它时,编辑控件得到焦点,并且弹出一个输入框(数字小键盘)点击输入框相应的数字就输入到编辑控件上(编辑控件一直存在焦点的),希望能得到你的帮助!!Top

14 楼huxiao_ping(老虎头)回复于 2001-06-21 10:55:00 得分 0

同样想得到你的帮助,我在项目中需要一个软键盘!huxiao_ping@sina.com.cnTop

15 楼huxiao_ping(老虎头)回复于 2001-06-21 11:18:00 得分 0

我也是借鉴vchelp上的例子做的!但不能向其他对话框输入,只能打开一个写字板输入!  
   
  Top

相关问题

  • 紧急求援!是否能用javascript使输入法失效?
  • 输入法编程问题(紧急求救)
  • 紧急求助:输入法调试问题(在线等)
  • 在程序中怎样改变输入法和键盘布局?
  • 输入法的软键盘是怎么做的?
  • 怎样用代码打开输入法的软键盘?
  • 有关2000里面的输入法小键盘的问题
  • 我的键盘钩子与输入法冲突,怎么办?
  • 紧急求救!!窗体最前端!!输入法对程序最小化影响!!!!
  • 我要模拟键盘事件,可是中文输入法接不到

关键词

  • .net
  • 键盘
  • 控件
  • 中文
  • 消息
  • 软键盘
  • 输入
  • 例子
  • 焦点
  • 程序

得分解答快速导航

  • 帖主:beantong
  • vcbear
  • In355Hz

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo