活動窗口(Active),焦點窗口(Focus)和前景窗口(Foreground)之間的關係

活動窗口(Active),焦點窗口(Focus)和前景窗口(Foreground)之間的關係

任何一個時候,咱們的Windows桌面上總有一個最前臺的窗口,其實說簡單的,就是標題欄變成深藍色的那個窗口,僅此一個,這個窗口就是前景窗口(Foreground Window),其餘窗口就是後臺窗口(Background Window)。那建立前景窗口的線程就是前景線程(Foreground Thread),這個線程並不必定就是應用程序的主線程。線程

線程內部會維護當前本身的活動窗口(Active Window)和焦點窗口(Focus Window), 焦點窗口其實只是窗口的一個屬性,其實就是「焦點狀態」是窗口的一個屬性,而焦點窗口的頂層窗口就是活動窗口,舉個例子:一個對話框中有一個按鈕,當按鈕 得到焦點的時候,那此按鈕就是焦點窗口,則包含此按鈕的對話框就是活動窗口,若出現窗口嵌套的狀況,則最根的那個窗口才是活動窗口。隊列

上面2段已經分別描述了前景窗口,活動窗口和焦點窗口的一些狀況,但是前景窗口和活動窗口又是什麼區別呢?事件

焦 點窗口只是一個局部的概念,並非全部的焦點窗口均可以得到鍵盤事件。只有前景線程的焦點窗口才能從系統隊列中獲得鍵盤事件,而前景線程中的活動窗口是前 景窗口。在任什麼時候刻系統中都只可能有一個被激活的窗口,這就是前景窗口。這也就回答了上一節中的問題:與系統隊列相鏈接的線程就是前景線程,而那個能夠得 到鍵盤事件的窗口就是前景線程的焦點窗口。(以上文字引自開頭的文章)it

相信仔細理解一下這些描述,應該能對你有所幫助了。class

相關文章
相關標籤/搜索