问题的提出:
1,一后台运行的程序,在系统发生某一事件会后激活,使用SetWindowPos()虽然能窗口置为前台显示,总是不能获得输入焦点。
2,已知窗口的Handle,如何设定把焦点放到这个窗口上?
3,使窗体浮在系统的最上面。但没有焦点?
等等,诸如此类的问题,解决方案如下:
//如上所述窗口已经置前,但是没有获得焦点
SetWindowPos(mpForm->Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE|SWP_SHOWWINDOW);
//最为重要Application->Handle,即使在一个程序中,设置mpForm->Handle的Handle也是没有用的
SetForegroundWindow(Application->Handle);
//设置焦点控件
SetFocus(mpForm->UserList->Handle); //mpForm为Application下的窗体,UserList为要获得焦点的控件。