複製鏈接
請複製以下鏈接發送給好友

輸入焦點

鎖定
輸入焦點即為windows導向系統中被動等待用户信息。
中文名
輸入焦點
實    質
以消息為導向的系統
領    域
科技
輸入焦點
Windows是一個以消息為導向的系統,應用程序只能被動地等待用户按鍵的消息,不能主動地去讀鍵盤的狀態,也就是説,每當鍵盤上有個鍵被按下,系統就會發出一個按鍵消息給窗口,告訴它某個鍵被按下去了,只要鼠標移動一下,系統也會發出相應的消息,並把鼠標的座標信息傳給窗口。
Windows可以同時執行許多程序,但鍵盤只有一個,怎麼判斷由哪個窗口接收鍵盤及鼠標的消息呢?採用“輸入焦點”(input focus)技術可以解決這個問題。只要某個窗口取得輸入焦點,它不但會被提升到屏幕的最前面,顏色也會有所不同,所有的鍵盤消息就會導向該窗口,該窗口也成為“活動窗口”。
窗口如何取得輸入焦點?通常被鼠標單擊的窗口會得到輸入焦點,除此之外,程序本身也可以利用SetFocus()來指定哪個窗口擁有輸入焦點。
CWnd* CWnd::SetFocus();
如果調用某窗口的SetFocus()成員函數,該窗口就可以取得輸入焦點,該函數返回前一個擁有輸入焦點的窗口。
如果某個窗口的輸入焦點被搶走,Windows系統就會發出WM_KILLFOCUS消息給這個失去輸入焦點的窗口,同時還會告訴該窗口下一個取得輸入焦點的窗口的指針。而獲得輸入焦點的窗口則會收到WM_SETFOCUS消息。
消息響應函數分別為:
afx_msg void OnKillFocus(CWnd* pNewWnd);
其中的參數為得到輸入焦點的窗口的指針。
Afx_msg void OnSetFocus(CWnd* pOldWnd);
其中的參數為失去輸入焦點的窗口的指針。