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

解决方案 »

  1.   

    这个没做过,我觉得你这个需求和输入法应该是一样的看看这个吧:
    http://www.vckbase.com/document/viewdoc/?id=1807
      

  2.   

    推荐个思路,但不完善检测鼠标的ICON,当为文本选择时,就是你弹出来的时候可扩展
      

  3.   

    系统应该会有接口,输入法应该是注册到操作系统得,当用户选择你得输入法是当前输入法,应该会自动调用。系统应该是会提供一套完整得api得,从注册消息,到实现得一套机制。
      

  4.   

    是啊是啊 就是做个给全系统使用的 我们的软件本来就是山寨ipad 就是IPAD那个键盘啦 纠结了好久了 到底如何知道系统处于可以输入的状态呢。 输入法接口也看过些 但没搞过输入法,不甚清楚啊
    判断鼠标的做法也用过,不太可靠。比如flash里的一个输入框成为那个竖线了 我根本无法知道啊
      

  5.   

    很简单啊!就是判断用按键是的key值!键盘的每一个键都有一个key值的!具体的你就Google一下吧!
      

  6.   

    谢谢大家 看来我得把问题再简单纠正一下 我是想知道“系统现在能不能输入字符” 而不是“当前输入的是什么字符”  检查鼠标形状的不靠谱 那个竖线不是鼠标 鼠标离开了输入区 也算处于输入状态的吗另外根据以前的一些探索 IME方面的函数在XP下好用 win7下问题多多 有文档说在vista win7后 ime被摒弃了 具体不详啊 (Input Method Editor-IME)
      

  7.   


    这是个不错的帖子 谈的是IME 这套函数也稍微试验了 但是最基本的功能到win7下不好使了 所以就没细究了
      

  8.   

    给楼主提供点线索。如果当前有某个窗口获得焦点,并且这个窗口响应WM_GETDLGCODE消息的返回值中包含DLGC_WANTCHARS,则需要出现楼主说的那个键盘。
      

  9.   

    ime,会被用来种马这个软件盘的呼叫时机,确实很难,跟着学习
      

  10.   

    逆向思维键盘模块是被动的需要使用软键盘的地方,OnSetFocus() 消息响应时,发送消息激活软键盘。
    类似调用ime的API函数启动输入法。
      

  11.   

    弹出时机1) 由软件来控制假定有一个 Api函数 OpenSoftkey();那么当软件需要输入时调用 OpenSoftkey();
    2)由系统控制
    作一个输入法程序,可能不需要太多功能,只需要调用你的软键盘程序出来。
    然后在控制面板中设置该输入法默认输入法。当用户打开记事本,任何需要输入数据的地方,系统会自动调用该输入法,当调用该输入法时,你就启动自己的软键盘。
    不知道,我说明白没有。也就是说,被动的启动你的键盘。而不是它自身去监视何时启动。
      

  12.   

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

  13.   


     根据大家的提示 我目前已经能做到 当类似记事本,IE搜索框,windows软件的edit框获得焦点时 弹出来但当这些“edit”变为 "flash中的eidit”框  WPF中的edit框 firefox的edit框 就侦测不到了我很简单的用timer 检查当前活动进程是否拥有输入焦点。