輸入焦點

輸入焦點

輸入焦點即為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);
其中的參數為得到輸入焦點的視窗的指針。

相關詞條

熱門詞條

聯絡我們