2 回答

TA貢獻1784條經驗 獲得超2個贊
setfocus的函數原型是HWND SetFocus。SetFocus函數發送WM_KILLFOCUS消息到失去鍵盤焦點的窗口,并且發送WM_SETFOCUS消息到接受鍵盤焦點的窗口。它也激活接受鍵盤焦點的窗口或接受鍵盤焦點的窗口的父窗口。
函數功能:該函數對指定的窗口設置鍵盤焦點。該窗口必須與調用線程的消息隊列相關。
函數原型:HWND SetFocus(HWND hWnd)。
參數:
hWnd:接收鍵盤輸入的窗口指針。若該參數為NULL,則擊鍵被忽略。
返回值:若函數調用成功,則返回原先擁有鍵盤焦點的窗口句柄。若hWnd參數無效或窗口未與調用線程的消息隊列相關,則返回值為NULL。若想要獲得更多錯誤信息,可以調用GetLastError函數。
備注:SetFocus函數發送WM_KILLFOCUS消息到失去鍵盤焦點的窗口,并且發送WM_SETFOCUS消息到接受鍵盤焦點的窗口。它也激活接受鍵盤焦點的窗口或接受鍵盤焦點的窗口的父窗口。
若一個窗口是活動的,但沒有鍵盤焦點,則任何按鍵將會產生WM_SYSCHAR,WM_SYSKEYDOWN或WM_SYSKEYUP消息。若VK_MENU鍵也被按下,則消息的IParam參數將設置第30位。否則,所產生的消息將不設置此位。
使用AttachThreadInput函數,一個線程可將輸入處理連接到其他線程。這使得線程可以調用SetFocus函數為一個與其他線程的消息隊列相關的窗口設置鍵盤焦點。
Windows CE:不使用SetFocus函數為一個與其他線程的消息隊列相關的窗口設置鍵盤焦點。但有一個例外。若一個線程的窗口是另一線程的子窗口,或這些窗口是具有同一父窗口的兄弟窗口,則與一個線程關聯的窗口可以為其他窗口設置焦點,盡管該窗口屬于一個不同的線程。在這種情況下,就不必先調用AttachThreadlnpUt函數。
- 2 回答
- 0 關注
- 938 瀏覽
添加回答
舉報