最近想做一个虚拟键盘,遇到了一个有关问题请问

最近想做一个虚拟键盘,遇到了一个问题请教
比如我打开记事本,然后用我的软件向记事本输入字符,这里焦点是在记事本,然后我在点击软件上的按钮(比如'a'),这里焦点就会在对话框上,点完之后焦点重新跑到记事本,在这个过程中,就会出现当你点击按钮时,记事本和对话框会抖到一下,想请教各位,这个问题有什么好的方法解决吗?我是想点击对话框上的按钮时,焦点一直在记事本中,


------解决方案--------------------
系统自带的屏幕键盘没这个问题
------解决方案--------------------
锁定前置窗口,调用这个API LockSetForegroundWindow,具体如下:

void CGlobal::LockSetForegroundWindow(UINT uLockCode)
{
typedef BOOL (WINAPI *MYFUNC)(UINT uLockCode);

HMODULE hFuncInst = LoadLibrary(_T("User32.DLL"));

MYFUNC LockWnd;
LockWnd = (MYFUNC)::GetProcAddress(hFuncInst, "LockSetForegroundWindow");
LockWnd(uLockCode);

return ;
}
------解决方案--------------------
你可以参考一下输入法程序是怎么做的,一般输入法窗口不会获取焦点~
------解决方案--------------------
http://download.****.net/detail/iamah/1564080
------解决方案--------------------
用SetWindowLong设置窗体属性为SWP_NOACTIVATE
无法获得焦点。

但是这个方法会阻碍你虚拟键盘窗口的移动。
你虚拟键盘点击窗体用这个来移动
SendMessage(hWnd,WM_NCLBUTTONDOWN,HTCAPTION,0)

具体的你实验下
------解决方案--------------------
http://blogs.msdn.com/b/codefx/archive/2012/10/06/sample-of-oct-5th-create-a-soft-keyboard.aspx
看看这个