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