這篇文章翻譯至MSDN2005,給自己學習,也給所有覺得它有用的人,文中難免有翻譯不到位或者錯誤的地方,望高手指正。譯者:歐昊川(轉載麻煩注明出處及譯者)
2008年5月4日
這個概述討論了窗口的一些特性,如窗口類型、狀態、大小及位置。
1、窗口類型(WindowStyles)
這一節描述層疊窗口、彈出窗口、子窗口、分層窗口、僅處理消息的窗口這五種類型。
1.1層疊窗口(OverlappedWindows)
層疊窗口是一個具有標題欄、邊框和客戶區的頂層窗口;也就是說它適合做為應用程序主窗口。它也可以具有一個系統菜單,最小和最大化按鈕,以及滾動條。一個層疊窗口被典型地用于包含所有上述組件的應用程序主窗口。
通過在CreateWindowEx中指定WS_OVERLAPPED或者WS_OVERLAPPEDWINDOW樣式,一個應用程序就能創建一個層疊窗口。假如你使用第一個樣式,那么創建的窗口就具有一個標題欄和邊框;假如你使用第二個,那么窗口就具有一個標題欄,可以調整大小的邊框,系統菜單,以及最大最小化按鈕。
1.2彈出窗口(Pop-upWindows)
彈出窗口是一個非凡的層疊窗口,它被用于顯示在應用程序主窗口之外的對話框,消息框以及其他臨時窗口。標題欄對彈出窗口來說是可選的;除此之外,彈出窗口跟具有WS_OVERLAPPED樣式的層疊窗口一樣。
你可以通過在CreateWindowEx中指定WS_POPUP樣式來創建一個彈出窗口。假如要使用標題欄,就加入WS_CAPTION樣式。使用WS_POPUPWINDOW樣式來創建一個含有邊框和系統菜單的彈出窗口。WS_CAPTION樣式必須與WS_POPUPWINDOW樣式一起使用才能使系統菜單可見。
1.3子窗口(ChildWindows)
子窗口具有WS_CHILD樣式并且它被限制在其父窗口的客戶區中。應用程序典型地使用子窗口來把其父窗口的客戶區劃分成幾個功能區域。你可以通過在CreateWindowEx中指定WS_CHILD樣式來創建子窗口。
子窗口必須具有一個父窗口。父窗口可以是一個層疊窗口,彈出窗口,或者另外一個子窗口。你可以在CreateWindowEx中指定父窗口。假如你在CreateWindowEx中指定了WS_CHILD樣式但是沒有指定父窗口,那么系統不會創建這個子窗口。
子窗口只具有一個客戶區而沒有其他特性,除非這些特性被明確的請求。應用程序可以為子窗口添加標題欄,系統菜單,最小化最大化按鈕,邊框,以及滾動條。但是子窗口不能具有自定義菜單。假如應用程序指定了一個自定義菜單句柄,那么無論是在它注冊這個子窗口類還是創建這個子窗口時,這個菜單句柄都被忽略。假如沒有指定邊框樣式,系統將創建一個無邊框窗口。應用程序可以使用無邊框的子窗口來劃分父窗口的客戶區假如想保持這種劃分對用戶是不可見的話。
下面一節討論窗口的布置、裁剪、與父窗口的關系、消息四個主題。
1.4窗口布置(Positioning)
系統總是相對于父窗口客戶區的左上角來放置子窗口。子窗口的任何部分都不會出現在其父窗口的邊框之外。假如應用程序創建一個比父窗口大的子窗口,或者移動子窗口使得一個或者所有子窗口超出了父窗口的邊框,那么系統會裁剪子窗口,即在父窗口邊框之外的部分不被顯示。對父窗口產生影響的行為同樣會影響子窗口,這些行為如下:
posted on 2008-08-16 13:38
幽幽 閱讀(1168)
評論(0) 編輯 收藏 引用 所屬分類:
Windows