問題的提出:
1,一后臺運行的程序,在系統(tǒng)發(fā)生某一事件會后激活,使用SetWindowPos()雖然能窗口置為前臺顯示,總是不能獲得輸入焦點。
2,已知窗口的Handle,如何設(shè)定把焦點放到這個窗口上?
3,使窗體浮在系統(tǒng)的最上面。但沒有焦點?
等等,諸如此類的問題,解決方案如下:
//如上所述窗口已經(jīng)置前,但是沒有獲得焦點
SetWindowPos(mpForm->Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE|SWP_SHOWWINDOW);
//最為重要Application->Handle,即使在一個程序中,設(shè)置mpForm->Handle的Handle也是沒有用的
SetForegroundWindow(Application->Handle);
//設(shè)置焦點控件
SetFocus(mpForm->UserList->Handle); //mpForm為Application下的窗體,UserList為要獲得焦點的控件。