Windows常見窗口樣式和控件風格

Windows常見窗口樣式和控件風格
                 王佰營 徐麗紅

1、窗口樣式

WS_POPUP        彈出式窗口(不能與WS_CHILDWINDOW樣式同時使用)
WS_CHILDWINDOW  子窗口(不能與WS_POPUP合用)
WS_MINIMIZE     建立窗口擁有最小化按鈕
WS_MINIMIZEBOX  建立窗口擁有最小化按鈕,須同時指定WS_SYSTEM樣式
WS_VISIBLE      可見狀態
WS_DISABLED     不可用狀態
WS_CLIPSIBLINGS 使窗口排除子窗口之間的相對區域
WS_CLIPCHILDREN 當在父窗口內繪圖時,排除子窗口區域
WS_MAXIMIZE     具備最大化按鈕
WS_MAXIMIZEBOX  建立窗口擁有最大化按鈕,須同時指定WS_SYSTEM樣式
WS_CAPTION      有標題框和邊框(和WS_TILED樣式相同)
WS_BORDER       有單邊框
WS_DLGFRAME     帶對話框邊框樣式,不帶標題框
WS_VSCROLL      有垂直滾動條
WS_HSCROLL      有水平滾動條
WS_SYSMENU      標題框上帶有窗口菜單(須指定WS_CAPTION樣式)
WS_THICKFRAME   有可調邊框(與WS_SIZEBOX樣式相同)
WS_TILED        與WS_OVERLAPPED風格相同
WS_TILEDWINDOW  與WWS_OVERLAPPEDWINDOW風格相同
WS_GROUP        組樣式,每一個組的第一個控件具備WS_TABSTOP樣式
WS_TABSTOP      可接受TAB鍵
WS_OVERLAPPED   建立一個重疊式窗口,擁有標題欄和邊框
WS_OVERLAPPEDWINDOW 即:WS_OVERLAPPED風格,WS_CAPTION風格,WS_SYSMENU風格
                  WS_THICKFRAME風格,WS_MINIMIZEBOX風格和WS_MAXIMIZEBOX
                    風格的組合框架

 

 

/* 窗口擴展樣式參考列表:
WS_EX_DLGMODALFRAME -                   帶雙層邊框
WS_EX_NOPARENTNOTIFY -                    建立/銷燬時不通知父窗口
WS_EX_TOPMOST -                                     窗口置頂(停留在全部非最高層窗口的上面)
WS_EX_ACCEPTFILES -                               可接受文件拖放
WS_EX_TRANSPARENT - =&H20             透明樣式,在同屬窗口已重畫時該窗口才可重畫
WS_EX_MDICHILD -                                     MDI子窗口樣式
WS_EX_TOOLWINDOW -                             工具條窗口樣式
WS_EX_WINDOWEDGE -                             帶凸起邊緣的邊框
WS_EX_CLIENTEDGE -                                 帶陰影的邊緣
WS_EX_CONTEXTHELP -                                有上下文幫助樣式,標題欄包含一個問號標誌
WS_EX_RIGHT - 右對齊
WS_EX_RTLREADING -                                 窗口文本從右到左顯示
WS_EX_LEFTSCROLLBAR -                         垂直滾動條在窗口左邊界
WS_EX_CONTROLPARENT -                         容許用戶使用TAB鍵在窗口的子窗口間搜索
WS_EX_STATICEDGE -                                     當窗口爲不可用狀態時建立一個三維邊緣
WS_EX_APPWINDOW -                                    當窗口可見時將一個頂層窗口放置在任務欄上
WS_EX_OVERLAPPEDWINDOW -                 帶凸起邊緣的邊框,邊緣有陰影
WS_EX_PALETTEWINDOW -                         帶立體邊框,有工具條窗口樣式,窗口在頂層
WS_EX_LAYERED  =&H80000                           分層或透明窗口,該樣式可以使用混合特效
WS_EX_NOINHERITLAYOUT - 子控件不繼承窗體或控件的佈局
WS_EX_LAYOUTRTL - 窗體或控件將具備從右向左的佈局(於是會被鏡像)
WS_EX_COMPOSITED - 用雙緩衝從下到上繪製窗口的全部子孫(WinXP以上)
WS_EX_NOACTIVATE - 處於頂層但不激活工具


2、按鈕風格 
    
BS_AUTOCHECKBOX   同複選按鈕相似,點擊一下選中,再次點擊取消。
BS_AUTORADIOBUTTON同單選按鈕相似,點擊後選中標誌將從同組的其餘單選按鈕處移到當前選項。
BS_CHECKBOX       複選按鈕
BS_DEFPUSHBUTTON   默認普通按鈕,具備較黑的邊框。
BS_GROUPBOX       分組框
BS_LEFTTEXT       同單選按鈕或複選按鈕配合使用,標題將顯示在左側。
BS_OWNERDRAW       可建立一個擁有者自繪按鈕。
BS_PUSHBUTTON       普通下壓按鈕
BS_RADIOBUTTON       圓形單選按鈕
BS_3STATE       三態複選按鈕,三種狀態即:選中,未選中,未定
BS_AUTOCHECKBOX   檢查框,按鈕的狀態會自動改變
BS_AUTORADIOBUTTON圓形選擇按鈕,按鈕的狀態會自動改變
BS_AUTO3STATE     容許按鈕有三種狀態即:選中,未選中,未定
BS_CHECKBOX       檢查框
BS_LEFTTEXT       左對齊文字

3、旋轉按鈕控件

UDS_HORZ 指定一個水平旋轉按鈕.若不指定該風格則建立一個垂直的旋轉按鈕.
UDS_WRAP 當旋轉按鈕增大到超過最大值時,自動重置爲最小值,當減少至低於最小值時,自動重置爲最大值.
UDS_ARROWKEYS 當用戶按下向下或向上箭頭鍵時,旋轉按鈕值遞增或遞減.
UDS_SETBUDDYINT 旋轉按鈕將自動更新夥伴控件中顯示的數值,若是夥伴控件能接受輸入,則可在夥伴控件中輸入新的旋轉按鈕值.
UDS_NOTHOUSANDS 夥伴控件中顯示的數值每隔三位沒有千位分隔符.
UDS_AUTOBUDDY  自動使旋轉按鈕擁有一個夥伴控件.
UDS_ALIGNRIGHT 旋轉按鈕在夥伴控件的右側.
UDS_ALIGNLEFT  旋轉按鈕在夥伴控件的左側.

4、軌道條控件

TBS_HORZ 指定一個水平軌道條.該風格是默認的.
TBS_VERT 指定一個垂直軌道條.
TBS_AUTOTICKS 在範圍設定後,自動爲軌道條加上刻度.
TBS_NOTICKS 軌道條無刻度.
TBS_BOTTOM  在水平軌道條的底部顯示刻度,可與TBS_TOP一塊兒使用.
TBS_TOP 在水平軌道條的頂部顯示刻度,可與TBS_BOTTOM一塊兒使用.
TBS_RIGHT 在垂直軌道條的右側顯示刻度,可與TBS_LEFT一塊兒使用.
TBS_LEFT 在垂直軌道條的左側顯示刻度,可與TBS_RIGHT一塊兒使用.
TBS_BOTH 在軌道條的上下部或左右兩側都顯示刻度.
TBS_ENABLESELRANGE 在軌道條中顯示一個選擇範圍.

5、文本編輯框風格

ES_AUTOHSCROLL     當在行尾添加一個字符後自動向右滾動10個字符。
ES_AUTOVSCROLL     當輸入回車後自動上滾一行。
ES_CENTER     字符居中顯示。
ES_LEFT     字符左對齊。
ES_LOWERCASE     統一轉化爲小寫字母。
ES_MULTILINE     容許多行顯示。
ES_NOHIDESEL     當編輯失去焦點時隱藏對字符的選定,從新得到焦點後以反色顯示選中內容。
ES_OEMCONVERT     將ANSI字符轉化爲OEM字符。
ES_PASSWORD     以星號顯示字符,多用於回顯密碼。
ES_RIGHT     字符右對齊
ES_UPPERCASE     統一轉化爲大寫字母。
ES_READONLY     設置字符爲只讀。
ES_WANTRETURN     接受回車鍵輸入。

6、列表框風格 
    
LBS_STANDARD     建立一個具備邊界和垂直滾動條、當選擇發生變化或條目被雙擊時可以通知父窗口的標準列表框。全部條目按字母排序。
LBS_SORT     按字母排序。
LBS_NOSEL     條目可視但不可選。
LBS_NOTIFY     當用戶選擇或雙擊一個串時,發出消息通知父窗口。
LBS_DISABLENOSCROLL     在條目很少時依然顯示並不起做用的滾動條。
LBS_MULTIPLESEL     容許條目多選。
LBS_EXTENDEDSEL     可用SHIFT和鼠標或指定鍵組合來選擇多個條目。
LBS_MULTICOLUMN     容許多列顯示。
LBS_OWNERDRAWVARIABLE     建立一個擁有者畫列表框,條目高度能夠不一樣。
LBS_OWNERDRAWFIXED     建立一個具備相同條目高度的擁有者畫列表框。
LBS_USETABSTOPS     容許使用TAB製表符。
LBS_NOREDRAW     當條目被增刪後不自動更新列表顯示。
LBS_HASSTRINGS     記憶了添加到列表中的字串。
LBS_WANTKEYBOARDINPUT     當有鍵按下時向父窗口發送WM_VKEYTOITEM或WM_CHARTOITEM消息。
LBS_NOINTEGRALHEIGHT     按程序設定尺寸建立列表框。

7、組合框風格

CBS_AUTOHSCROLL 當在行尾輸入字符時自動將編輯框中的文字向右滾動。
CBS_DROPDOWN     同CBS_SIMPLE風格相似,只是只有在用戶點擊下拉圖標時纔會顯示出下拉列表。
CBS_DROPDOWNLIST 同CBS_DROPDOWN相似,只是顯示當前選項的編輯框爲一靜態框所代替。
CBS_HASSTRINGS     建立一個包含了由字串組成的項目的擁有者畫組合框。
CBS_OEMCONVERT     將組合框中的ANSI字串轉化爲OEM字符。
CBS_OWNERDRAWFIXED 由下拉列表框的擁有者負責對內容的繪製;列表框中各項目高度相同。
CBS_OWNERDRAWVARIABLE 由下拉列表框的擁有者負責對內容的繪製;列表框中各項目高度能夠不一樣。
CBS_SIMPLE     下拉列表始終顯示。
CBS_SORT     自動對下拉列表中的項目進行排序。
CBS_DISABLENOSCROLL 當下拉列表顯示內容過少時顯示垂直滾動條。
CBS_NOINTEGRALHEIGHT在建立控件時以指定的大小來精確設定組合框尺寸。

8、樹形視圖控件

TVS_HASLINES 在父項與子項間連線以清楚地顯示結構.
TVS_LINESATROOT 只在根部畫線.
TVS_HASBUTTONS 顯示帶有"+"或"-"的小方框來表示某項可否被展開或已展開.
TVS_EDITLABELS 用戶能夠編輯表項的標題.
TVS_SHOWSELALWAYS 即便控件失去輸入焦點,仍顯示出項的選擇狀態.
TVS_DISABLEDRAGDROP 不支持拖動操做.

9、列表視圖控件佈局


LVS_ALIGNLEFT 當顯示格式是大圖標或小圖標時,標題放在圖標的左邊.缺省狀況下標題放在圖標的下面.
LVS_ALIGNTOP 當顯示格式是大圖標或小圖標時,標題放在圖標的上邊.
LVS_AUTOARRANGE 當顯示格式是大圖標或小圖標時,自動排列控件中的表項.
LVS_EDITLABELS 用戶能夠修改標題.
LVS_ICON 指定大圖標顯示格式.
LVS_LIST 指定列表顯示格式.
LVS_NOCOLUMNHEADER 在報告格式中不顯示列的表頭.
LVS_NOLABELWRAP 當顯示格式是大圖標時,使標題單行顯示.缺省時是多行顯示.
LVS_NOSCROLL 列表視圖無滾動條.
LVS_NOSORTHEADER 報告列表視圖的表頭不能做爲排序按鈕使用.
LVS_OWNERDRAWFIXED 由控件的擁有者負責繪製表項.
LVS_REPORT 指定報告 顯示格式.
LVS_SHAREIMAGELISTS 使列表視圖共享圖像序列.
LVS_SHOWSELALWAYS 即便控件失去輸入焦點,仍顯示出項的選擇狀態.
LVS_SINGLESEL 指定一個單選擇列表視圖.缺省時能夠多項選擇.
LVS_SMALLICON 指定小圖標顯示格式.
LVS_SORTASCENDING 按升序排列表項.
LVS_SORTDESCENDING 按降序排列表項.測試

10、靜態文本框風格字體

SS_CENTER        字符居中顯示。
SS_LEFT          字符左對齊。
SS_LEFTNOWORADWRAP 字符左對齊,可處理TAB製表符,不支持自動換行,超過末尾字符被裁剪。
SS_BLACKRECT    用窗口邊框色填充的矩形。
SS_BLSCKFRAME   矩形邊框,與窗口邊框同色。
SS_GRAYRECT     用屏幕背景色填充的矩行。
SS_GRAYFRAME    矩形邊框,使用屏幕背景色。
SS_WHITERECT    用窗口背景色填充的矩行。
SS_RIGHT        字符右對齊
SS_WHITEFRAME   矩形邊框,使用窗口背景色。orm

 

 

/* 控件樣式參考列表:
DS_ABSALIGN - 對話框的座標爲屏幕座標(缺省爲客戶區座標)
DS_SYSMODAL - 系統模式(僅支持16位程序),不能與DS_CONTROL同用
DS_LOCALEDIT - 在對話框內部爲編輯框分配內存(僅支持16位程序)
DS_SETFONT - 可定製對話框字體
DS_MODALFRAME - 框架樣式(不能與WS_CAPTION同用)
DS_NOIDLEMSG - 無空閒消息
DS_SETFOREGROUND - 使對話框在最前面顯示
DS_3DLOOK - 四周有3維邊框
DS_FIXEDSYS - 使用系統固定字體
DS_NOFAILCREATE - 忽略建立過程當中的錯誤
DS_CONTROL - 控件模式,可做爲其餘對話框的子窗口
DS_CENTER - 在屏幕居中
DS_CENTERMOUSE - 在鼠標位置居中
DS_CONTEXTHELP - 有上下文幫助按鈕排序

 

 

近日來工做中須要相似於QQ聊天窗口那樣,窗口最小化縮到任務欄,點任務欄上的按鈕能夠復原窗口,因爲窗口是子窗口,因此咱們重載了窗口的CreateParams方法以下:繼承

 

procedure TsubForm2.CreateParams(var Params: TCreateParams);
begin
    inherited CreateParams(Params); 
    with Params do begin
        ExStyle := ExStyle or WS_EX_APPWINDOW;
        WndParent := GetDesktopWindow();
    end;
end;事件

這樣窗口就能夠在任務欄上顯示了。內存

 

可是又碰到一個問題,就是因爲窗口樣式被我設置成了bs_None,爲無邊框窗口,因此我點任務欄上的窗口按鈕的時候,窗口沒法復原和收縮回任務欄。

後來仔細看了一下窗口樣式,想一想,咱們的目的無非是可以響應普通窗口同樣的消息,因而,我將窗口設置成bs_Sizeable,而後就可以實現QQ聊天窗口的那 個效果,因而,俺就想在bs_Sizeable的樣式下減去窗口的邊框樣式,這樣來測試,因而俺先減去了一個WS_Caption標題樣式,此時窗口能夠實現QQ聊天窗口的那種樣式了,可是多了一個邊框,又仔細查看了一下Windows的窗口樣式,發現一個樣式WS_THICKFRAME,該樣式是用來拖動窗口大小的時候的一個窗口邊框,因而俺在多減去該樣式

最後效果實現

在窗口的Create事件中

加上一個樣式設置的就可

SetWindowLong(Handle,GWL_STYLE,GetWindowLong(Handle,GWL_STYLE) and (not WS_CAPTION) and (not WS_THICKFRAME));

相關文章
相關標籤/搜索