Window視窗層次關係

2021-07-05 20:20:01 字數 1672 閱讀 9487

window 視窗層次關係 

相信在window 下面程式設計的很多兄弟們都不是很清楚window 中視窗的層次關係是怎麼樣的,這個東西很久已經研究過一下,後來又忘記了,今天又一次遇到了這個問題,所以便整理一下。下面就說說window 中桌面(deskkop)以及頂層視窗,以及子視窗之間的關係。 

在window 的圖形介面下,最基本顯示資訊的元素就是視窗,每乙個window 視窗都管理著自己與其他視窗之間的關係和自身的一些資訊,如:是否可見,視窗的所有者,視窗的父/子關係等等資訊,當視窗建立、銷毀、顯示的時候,就會用到這些資訊。 

在每乙個視窗例項中,有四個元素被視窗管理器用來建立視窗管理鍊錶。 

 child :  指向視窗子視窗的控制代碼  

 parent: 指向視窗父視窗的控制代碼   owner: 指向視窗所有者的控制代碼  

 眾所周知當window 初始化的時候,它建立桌面這個視窗,桌面覆蓋著整個視窗,視窗管理器用這個視窗作為視窗鍊錶中第乙個元素。因此桌面在視窗的層次關係中在最上層。 

在視窗層次關係中,桌面視窗下一層視窗叫做頂層視窗,頂層視窗就是那些不是子視窗的視窗,頂層視窗不能夠有ws_child 屬性。視窗管理器是如何把桌面視窗和頂層視窗聯絡起來的呢?視窗管理器把頂層視窗都組織到乙個鍊錶中,而這個鍊錶的頭儲存的就是桌面視窗的子視窗控制代碼,每乙個子窗

口通過next 就可以找到鍊錶中下乙個視窗了。這個鍊錶被稱為子視窗鍊錶,在同乙個子視窗鍊錶中的視窗是互為同屬視窗,所有頂層視窗都是同屬視窗。視窗在子視窗鍊錶中的次序,也表明了視窗距離距離桌面視窗的距離。頂層視窗所形成的子視窗鍊錶構成了乙個z  軸,視窗管理器就是根據z 序列來覺得視窗的哪一部分是顯示的,哪一部分是被遮蓋的。 

所有頂層視窗的父視窗都是指向桌面視窗的,這樣一來頂層視窗就好像是桌面視窗的子視窗,所有頂層視窗構成的鍊錶是桌面視窗的子視窗鍊錶。當頂層視窗建立的時候,視窗管理器把頂層視窗放在z 軸的頂上,這樣使得整個視窗可見,視窗管理器把視窗插入到桌面視窗子視窗鍊錶的前面。ws_ex_topmost 這個屬性控制著視窗管理器建立頂層視窗,視窗管理器把沒有ws_ex_topmost 屬性的視窗放在具有ws_ex_topmost 屬性的視窗的後面,這樣就使得具有ws_ex_topmost 屬性的視窗一直顯示在前面。 

在頂層視窗之間還有另外一直關係,擁有或者屬於其他的頂層視窗,屬於其他視窗的視窗叫做歸屬視窗,擁有其他視窗叫做宿主視窗,在z 軸中,歸屬視窗一定在他的宿主視窗的前面,如果乙個宿主視窗最小化,那麼歸屬他的視窗會隱藏掉,如果宿主視窗隱藏起來,歸屬他的視窗不會被隱藏掉。如果有三個視窗a、b、c ,a 擁有 b,b 擁有 c ,如果a 最小化,那麼b 會隱藏,但是 c 還是可見的。怎麼才能夠在視窗之間建立所有關係呢?方法是在呼叫createwindow或者createwindowex 建立視窗的時候,指定hwndparent  引數。

桌面視窗是在視窗層次中的第一層,頂層視窗在視窗層次中的第二層,子視窗也就是那些建立的時候指定了ws_child  屬性的視窗佔據了視窗層次的其他層。視窗和子視窗之間的聯絡,就像桌面視窗和頂層視窗之間的關係一樣。 

子視窗顯示在其父視窗的客戶區域,所有同乙個視窗的子視窗同樣建立乙個z 軸,這個和頂層視窗是類似的,頂層視窗也是顯示在其父視窗――桌面視窗的客戶區域。   

16 位和32 位視窗系統的區別  

視窗之間的父子關係、歸屬所有關係、以及根據 z 軸來顯示的這些規則在16 位和32 位視窗系統中都是相同的。這樣可以是在兩種視窗系統中高度的相容。兩種視窗系統的區別在於安全和多執行緒。

Easyui 定製window視窗

jquery easyui 是一種基於jquery的使用者介面外掛程式集合,在實際的開發種給我們帶來了很大的便利,方便資料的直觀展示等。在實際的開發中,我們要使用easyui就需要先導入easyui的jar包。easyui預設的樣式是這樣子的 但是在實際的開發中有時候需要定製自己專案使用的easyu...

子視窗獲得父視窗得window

我們從乙個介面跳轉至另乙個介面,我們需要知道第乙個介面得使用者是誰,他的使用者放在window.configuration.currentuser 裡面,我們無法開發父頁面,因為父頁面是其他得系統,那麼我們子頁面怎麼獲得人員呢?父頁面狀態 父頁面得繫結值是這樣得,子頁面是我們二次開發得頁面 這裡就遇...

windows視窗關係

乙個視窗有很多方式關聯到使用者或者其它的視窗。乙個視窗可能是 自有視窗?前景視窗或者背景視窗。乙個視窗總有乙個 z序 用以關聯到其它視窗。什麼是 z序 下面會簡單的敘述一下 每個程序可以有多個可執行的執行緒。每個執行緒都可以建立視窗。乙個執行緒建立的了乙個視窗,並且這個視窗時使用者正在工作和使用的,...