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

解决方案 »

  1.   

    错了,是WinMe 的软键盘。
      

  2.   

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

  3.   

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

  4.   

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

  5.   

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

  6.   

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

  7.   

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

  8.   

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

  9.   

    同样想得到你的帮助,我在项目中需要一个软键盘![email protected]
      

  10.   

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