急啊 快疯了 各位达人来帮帮忙吧

allenhiman 2011-01-21 10:23:20
这个问题纠结我好几个月了 一直没有解决 昨天又突击了几小时 还是没结论。请大家帮忙看看吧
需求很简单 就是弄个长的像键盘的界面 界面弄好了 现在的问题是 什么时候让这个键盘弹出来, 很显然就是当用户需要输入字符时弹出来, 可是我怎么知道用户当前处于“能输入字符的状态”呢? 比如打开记事本时有那个竖线光标时算是处于输入状态,我在百度搜索栏打字时算是输入状态..., 是个基于dialog的工程 请达人指点迷津 所有意见都好!!!

纠结啊~~~~~
...全文
257 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2011-03-09
  • 打赏
  • 举报
回复
您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知

见此回复三日内无回应
我们将强制结帖
相关规定详见界面界面版关于版主结帖工作的具体办法
allenhiman 2011-02-14
  • 打赏
  • 举报
回复
最后顶一下 看看哪位小伙子 还能帮我一把啊
allenhiman 2011-01-26
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 visualeleven 的回复:]
引用 29 楼 allenhiman 的回复:
引用 28 楼 rebort_q 的回复:
让用户启动你的键盘符合需求吗?

只要能主动启动就行啊

EN_SETFOCUS当编辑框得到输入焦点的时候就可以弹出软键盘了
[/Quote]

根据大家的提示 我目前已经能做到 当类似记事本,IE搜索框,windows软件的edit框获得焦点时 弹出来

但当这些“edit”变为 "flash中的eidit”框 WPF中的edit框 firefox的edit框 就侦测不到了

我很简单的用timer 检查当前活动进程是否拥有输入焦点。
羽毛乱发 2011-01-25
  • 打赏
  • 举报
回复
是否可以这样的,先判断焦点的对象是否是文本框,如果是的话,就弹出软键盘!

键盘只在文本框上起作用,其它地方一律不显示!
Eleven 2011-01-25
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 allenhiman 的回复:]
引用 28 楼 rebort_q 的回复:
让用户启动你的键盘符合需求吗?

只要能主动启动就行啊
[/Quote]
EN_SETFOCUS当编辑框得到输入焦点的时候就可以弹出软键盘了
CLYCLT 2011-01-25
  • 打赏
  • 举报
回复
我是打酱油的,出来看看高手们的解答
allenhiman 2011-01-25
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 rebort_q 的回复:]
让用户启动你的键盘符合需求吗?
[/Quote]
只要能主动启动就行啊
精锐掷矛手 2011-01-25
  • 打赏
  • 举报
回复
让用户启动你的键盘符合需求吗?
wo128341 2011-01-25
  • 打赏
  • 举报
回复
拦截进程?
allenhiman 2011-01-24
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 saimen 的回复:]
弹出时机

1) 由软件来控制

假定有一个 Api函数 OpenSoftkey();

那么当软件需要输入时调用 OpenSoftkey();


2)由系统控制
作一个输入法程序,可能不需要太多功能,只需要调用你的软键盘程序出来。
然后在控制面板中设置该输入法默认输入法。

当用户打开记事本,任何需要输入数据的地方,系统会自动调用该输入法,当调用该输入法时,你就启动自……
[/Quote]
我明白你的意思 可以做一个输入法设定为用户默认输入法,这不行啊。用户随时能改,而且也不太好。 其实既然输入法程序能得到这个时机,为何普通程序得不到呢?
HuWenjin 2011-01-24
  • 打赏
  • 举报
回复
弹出时机

1) 由软件来控制

假定有一个 Api函数 OpenSoftkey();

那么当软件需要输入时调用 OpenSoftkey();


2)由系统控制
作一个输入法程序,可能不需要太多功能,只需要调用你的软键盘程序出来。
然后在控制面板中设置该输入法默认输入法。

当用户打开记事本,任何需要输入数据的地方,系统会自动调用该输入法,当调用该输入法时,你就启动自己的软键盘。


不知道,我说明白没有。

也就是说,被动的启动你的键盘。而不是它自身去监视何时启动。

allenhiman 2011-01-24
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 saimen 的回复:]
如果是给全系统用的,那么就要作输入法了。

然后要求把输入法设置为默认输入法。

当系统中有要求输入数据的地方就会自动调用你的输入法程序了。
[/Quote]
还不能做成输入法 那个键盘存在时 可以任意切换输入法 不同的输入法摁键盘上的键自然反应情况也不一样。
现在就是想知道这个弹出时机啊
zyrr159487 2011-01-22
  • 打赏
  • 举报
回复
当焦点置于编辑框的时候就让软键盘出来好了
HuWenjin 2011-01-22
  • 打赏
  • 举报
回复
如果是给全系统用的,那么就要作输入法了。

然后要求把输入法设置为默认输入法。

当系统中有要求输入数据的地方就会自动调用你的输入法程序了。
HuWenjin 2011-01-22
  • 打赏
  • 举报
回复
逆向思维

键盘模块是被动的

需要使用软键盘的地方,OnSetFocus() 消息响应时,发送消息激活软键盘。


类似调用ime的API函数启动输入法。
Wang471981125 2011-01-21
  • 打赏
  • 举报
回复
[Quote=引用楼主 allenhiman 的回复:]
这个问题纠结我好几个月了 一直没有解决 昨天又突击了几小时 还是没结论。请大家帮忙看看吧
需求很简单 就是弄个长的像键盘的界面 界面弄好了 现在的问题是 什么时候让这个键盘弹出来, 很显然就是当用户需要输入字符时弹出来, 可是我怎么知道用户当前处于“能输入字符的状态”呢? 比如打开记事本时有那个竖线光标时算是处于输入状态,我在百度搜索栏打字时算是输入状态..., 是个基于dialog的工程 请达……
[/Quote]
没做过软键盘的问题,帮顶。。
allenhiman 2011-01-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 varding 的回复:]
这个没做过,我觉得你这个需求和输入法应该是一样的

看看这个吧:
http://www.vckbase.com/document/viewdoc/?id=1807
[/Quote]

这是个不错的帖子 谈的是IME 这套函数也稍微试验了 但是最基本的功能到win7下不好使了 所以就没细究了
allenhiman 2011-01-21
  • 打赏
  • 举报
回复
谢谢大家 看来我得把问题再简单纠正一下 我是想知道“系统现在能不能输入字符” 而不是“当前输入的是什么字符” 检查鼠标形状的不靠谱 那个竖线不是鼠标 鼠标离开了输入区 也算处于输入状态的吗

另外根据以前的一些探索 IME方面的函数在XP下好用 win7下问题多多 有文档说在vista win7后 ime被摒弃了 具体不详啊 (Input Method Editor-IME)
JunJunSoul 2011-01-21
  • 打赏
  • 举报
回复
很简单啊!就是判断用按键是的key值!键盘的每一个键都有一个key值的!具体的你就Google一下吧!
wxh_xdk 2011-01-21
  • 打赏
  • 举报
回复
鼠标改为光标
加载更多回复(13)

15,979

社区成员

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

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