[翻譯]-WinCE 程序設計 (3rd 版)--4.1 子窗口

子窗口
每個窗口是通過父子關係體系連接到一起的。應用程序創建一個沒有父親的主窗口,稱爲頂層窗口。該窗口可能包含(也可能沒有包含)有窗口,稱爲子窗口。子窗口會被父窗口裁減。也就是說,子窗口超出父窗口邊沿的部分是不可見的。當父窗口被銷燬時,子窗口自動被銷燬。當父窗口移動的時候,子窗口隨父窗口一起移動。

從程序角度看子窗口同頂層窗口是一樣的。您可以使用CreateWindow或CreateWindowsEx函數來創建它們,和頂層窗口一樣,每個子窗口都有一個窗口過程來處理消息,並且每個都可以包含自己的子窗口。要創建子窗口,需要將CreateWindow或CreateWindowEx的參數dwStyle設置爲WS_CHILD。另外,對在頂層Windows CE窗口中沒有使用的hMenu參數,可以傳一個ID用以引用該子窗口。

在Windows CE下,頂層窗口和子窗口之間還有另外一個主要的不同點。Windows CE shell只給具有WS_OVERLAPPED和WS_VISIBLE風格的頂層窗口發送WM_HIBERNATE消息。(這種情況下的窗口可視與用戶是否可以看見是無關的。如果有其它窗口在Z軸方向蓋住了該窗口,該窗口對系統是可見的,但用戶是看不到的。)這意味着不能發送WM_HIBERNATE消息給子窗口和大部分對話框。頂層窗口要麼在需要的時候手工發送WM_HIBERNATE消息給它們的子窗口,要麼自己執行所有必要的工作來減少應用程序的內存使用量。在使用標準"Explorer shell"的Windows CE系統裏,支持在任務欄上顯示應用程序按鈕,而用於判斷WM_HIBERNATE消息目標窗口的規則,一樣適用於判斷哪些窗口獲得了任務欄上的按鈕。

窗口除了有父子關係外,還有一種擁有和被擁有的關係。被擁有的窗口並不被其擁有者裁剪。但是,被擁有的窗口總是出現在擁有者的Z座標的上方。如果擁有者最小化了,它擁有的所有窗口都被隱藏。同樣地,如果該窗口被銷燬,其擁有地所有窗口都被銷燬。

發佈了2 篇原創文章 · 獲贊 1 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章