我在这里找了一个源程序
http://www.codeproject.com/samples/onscreenkeyboard.asp
但是这个源程序是直接画的键盘,不知道怎么画,因此我希望使用按钮来实现键盘
我觉得那样有点击效果,看上去更自然和舒适。但是我试验了一下我的想法,结果却是
程序的焦点在我的程序和记事本之间不停切换,一点都不像那些输入法上的软键盘工作
自然和舒服,不知道我这个程序的问题出在哪里?
大家帮忙指点一下?
源程序我放在这里了。VC6.0+win2000环境
http://www.olight.com.cn/temp/keyboarddemo.rar
你找的那个源程序同样是程序的焦点在程序和记事本之间不停切换。只不过人家的切换速度比较快而以。估计他本来也是你这种想法,可是用按钮来实现键盘之后发现造成闪烁太严重,于是把按钮去掉,改成画的按钮。这样才实现了几乎不可察觉的闪烁。
所以建议你不要在这个方向上努力下去了。
输入法有个特点,他的窗口作为一种特殊窗口,与接受输入的窗口是等同的,它就像是目标窗口中的一个部分一样,他们之间没有切换。如果你打开有标题栏的输入法你会看到,两个的标题栏都是亮的,不存在一灰一亮。做不到这一点的就不是输入法,做到了这一点,具体输入时随你怎么做都行。
-----------------------------------------------------
这一点是这么做的:响应WM_ACTIVATE消息,hParenWnd是目标窗口句柄:
case WM_ACTIVATE:
if(IsWindowEnabled(hWnd))
{
SendMessage(hParentWnd,WM_NCACTIVATE,TRUE,0);
SendMessage(hWnd,WM_NCACTIVATE,TRUE,0);
}
break;
但是这么做了有没有用我就不知道了,楼主可以试试。