1、app
parent:建立者,owner:全部者
小玉的父母生下小玉,養到8歲,賣給賈府當丫頭
小玉的父母是parent,賈府是owner函數
2、線程
1.Pop-up窗口: 一個彈出窗口是必須具備WS_POPUP屬性的窗口,彈出窗口只能是一個Top-Level窗口,不能是子窗口,彈出窗口多用於對話框和消
息框,也能夠用於應用程序的主窗口, 彈出窗口能夠沒必要具備標題欄
2.Overlapped窗口: 一個重疊窗口是一個必須具備WS_OVERLAPPED屬性的窗口,也就是一個重疊窗口必須具備邊框,標題欄,客戶區域。重疊窗口
能夠是一個子窗口,也能夠是一個Top-Level窗口,重疊窗口通常都用於一個應用程序的主窗口
3.Top-Level窗口: 就是沒有WS_CHILD屬性的窗口,全部的Top-Level的父窗口爲桌面窗口。並非全部的Top-Level的窗口都在系統的任務欄中
顯示,只有全部者窗口爲NULL的Top-Level窗口才能在任務欄中顯示窗口的標題
4.Child窗口: 具備父窗口的窗口叫子窗口, 子窗口必須具備WS_CHILD屬性,同時子窗口也能夠有子窗口,子窗口能夠是一個重疊窗口,但不能是
一個彈出窗口。子窗口只能包含在父窗口的客戶區,不能移出到父窗口客戶區外,並且子窗口也不可能成爲活動窗口,也不可能
將子窗口的標題顯示在任務欄上。同時子窗口的最大化和最小化都在父窗口中顯示,在創建一個子窗口時所指定的RECT是以父窗
口的客戶區的左上角爲原點。而創建一個非子窗口時所指定的RECT是以屏幕爲座標原點的。子窗口能夠有系統菜單,但不能有菜
單欄.子窗口在父窗口銷燬前被銷燬,在父窗口隱藏前被隱藏,在父窗口顯示後被顯示,
5.Desktop窗口: 就是桌面,桌面窗口是一個特殊窗口,他既不是一個子窗口,也不是一個重疊窗口,也不是一個彈出窗口。
6.Parent窗口: 具備子窗口的窗口叫父窗口,父窗口銷燬前所屬的子窗口將自動被銷燬。父窗口在最小化時,其子窗口也會被最小化,但不隱藏
而父窗口在恢復時其子窗口也會被恢復.
7.Owner窗口: 只有重疊窗口和彈出窗口才能是Owner窗口,子窗口不能爲Owner窗口,Owner窗口銷燬前,他的全部的Owned窗口都將被自動銷燬,
當Owner窗口隱藏時他的全部Owned窗口不會隱藏。但當Owner最小化是他的Owned窗口會被隱藏。一個Owner窗口的全部Owned 窗口都將在Owner窗口的前面顯示,而不會在其後面顯示。
8.Owned窗口: 一個Owned窗口老是在Z-Order順序中通常是在他的Owner窗口以前,Owned窗口的生命能夠被他的Owner窗口控制,Owned窗口的顯
示並不侷限於他的Owner窗口區域,一個Owned窗口在創建後不能改變他的owner窗口,子窗口,彈出窗口,重疊窗口均可以作Owned
窗口。
9.窗口的Z-ORDER:
10.message-only窗口: 消息窗口不能被顯示,不能接受鍵盤和鼠標消息,不會接收廣播來的消息,同時消息窗口也不會被列舉,不會出如今窗口的
Z-Order順序中。其餘的於通常窗口同樣。能接收和發送消息。重疊,彈出,子窗口都能爲消息窗口
11.background窗口: 非foreground窗口就叫background窗口
12.foreground窗口: 若是用戶正某個線程創建的窗口上時,這時這個線程稱爲前臺線程,這個窗口則稱爲前臺窗口,此時其餘的線程都稱爲後臺
線程,後臺線程的窗口則稱爲後臺窗口, 前臺線程的優先級將必後臺線程的優先級要稍微高一點。當一個窗口成爲前臺窗
口時,這個窗口也成爲了活動窗口。系統有一個RIT線程來維護硬件輸入隊列SHIQ,每一個GUI線程都維護者一個虛擬輸入消
息隊列,並且在一個時間內只有一個線程的虛擬輸入隊列於SHIQ相聯繫,則這個於SHIQ相聯繫的線程就叫前臺線程.
13.active窗口: 活動窗口是用戶正在操做的一個Top-Level窗口,活動窗口通常放置在Z order的頂端,而且窗口的標題欄顏色高亮顯示。只有頂
層窗口才能做爲活動窗口,當用戶在一個子窗口上工做時,則子窗口所屬的一個Top-Level父窗口成爲活動窗口,在一個時間
內只有一個頂層窗口是活動窗口,活動窗口就是當前正接收鍵盤和鼠標輸入的窗口
14.disabled窗口: 不能響應鍵盤和鼠標輸入的窗口
15.visible窗口: 不可看見的窗口隊列
3、後臺
肯定窗口的父窗口和全部者窗口
在調用CreateWindow(Ex)函數來創建窗口時,根據hWndParent和dwStyle來肯定一個窗口的父窗口和全部者窗口,下面根據hWndParent是否爲NULL來區分:
1.hWndParent == NULL (必須是創建非WS_CHILD的窗口,才能hWndParent爲NULL)
對於有WS_CHILD的dwStyle來講,hWndParent不能爲NULL, 所以主要是創建重疊窗口和彈出窗口的狀況,在這種狀況下創建的窗口的父窗口將是系統的桌面窗口,而窗口的全部者窗口則是NULL。
2. hWndParent != NULL
對於有WS_CHILD的dwStyle來講,hWndParent就是新建窗口的父窗口,而新建窗口的全部者窗口爲NULL; 對於沒有WS_CHILD的重疊窗口或者彈出窗口來講,新建窗口的父窗口將爲NULL, 而hWndParent則是新建窗口的全部者窗口, 只有hWndParent是一個重疊的和彈出的窗口才有資格成爲一個全部者窗口,所以若hWndParent爲桌面窗口時,則新窗口的全部者窗口爲NULL, 而若當hWndParent爲一個子窗口時,則新建窗口的全部者窗口是hWndParent窗口的Top-Level父窗口。硬件
4、程序
在DREEATEWINDOW方法中,已經決定了父窗口或全部者窗口.
子窗口的父窗口必不爲空,但其全部者必爲空.
重疊窗口和彈出窗口若是HWNDPARENT不爲空,則是其全部者窗口,它們的父窗口必空.
如此一來,子窗口必有父窗口,必無全部者窗口. 重疊,彈出窗口可能有所者窗口,通常無父窗口.方法