組合框

組合框

組合框的風格取值定義了組合框的具體屬性,包括是否自動排序,是否有滾動條。

風格取描述


組合框
組合框
組合框的風格,取值如表所示。
CBS_AUTOHSCROLL 當用戶在編輯區域鍵入字元時,列表框自動滾動,使當前項的名稱與鍵入的字元排序相同
CBS_DROPDOWN 創建一個下拉式組合框
CBS_DROPDOWNLIST 創建一個下拉式列表框
CBS_HASSTRINGS 讓應用程序能夠使用GetText取得組合框里的文本
CBS_OEMCONVERT 把輸入的文本將從ANSI碼轉換成OEM碼,然後又轉換成ANSI碼;這樣的目的是保證函數AnsiToOem的正確調用
CBS_OWNERDRAWFIXED 父窗口負責重畫組合框里的各項,並使各項的高度一致
CBS_OWNERDRAWVARIABLE 父窗口負責重畫組合框里的各項,各項的高度不一致
CBS_SIMPLE 組合框顯示所有的項,當前的選項在編輯區域中顯示
CBS_SORT 自動排序
CBS_DISABLENOSCROLL 組合框有垂直滾動條,當組合框的項不足時,滾動條激活;沒有該風格,則滾動條隱藏
CBS_NOINTEGRALHEIGHT 指定組合框的大小由程序精確控制,通常組合框的大小由組合框里項的數目決定
創建一個組合框只需把CreateWindow的第一個參數設置為ComboBox,然後取表中的值即可。組合框創建后,需要初始化,即通過向組合框發送CB_ADDSTRING增加最初的項,這類似於列表框。如果沒有定義CBS_SORT風格,新增的項將被增加到組合框的末尾。
應用程序的父窗口主要通過 WM_COMMAND消息與組合框通信,應用程序可以用CB_FINDSTRINGEXACT搜索指定的項,還可以發送CB_DELETESTRING刪除指定的項,當需要刪除所有的項時,發送消息CB_RESETCONTENT即可。
組合框的編輯區域用來顯示當前選中的項或者編輯組合框里沒有的項。可以用CB_LIMITTEXT來限制輸入文本的大小;為了獲得編輯區域的文本,可發送CB_GETLBTEXT或者WM_GETTEXT消息,這樣就把文本複製到指定的字元串中,當需要設置編輯區域的文本時,只需要發送WM_SETTEXT消息。
Windows API為組合框提供了文件顯示和搜索的功能,它們主要通過函數DlgDirListComboBox和DlgDirSelectComboBox來實現。

窗口取值描述


本節的應用程序中將用到這些函數,並把文件的內容顯示在窗口裡。
CB_ADDSTRlNG 增加一項
CB_DELETESTRING 刪除指定的項
CB_DIR 發送搜索目錄的消息
CB_FINDSTRING 搜索指定的項
CB_FINDSTRINGEXACT 精確搜索指定的項
CB_GETCOUNT 得到組合框中項的數目
CB_GETCURSEL 得到當前選中項的序號
CB_GETEDITSEL 得到編輯區域選中的文本
CB_GETLBTEXT 得到編輯區域的文本
CB_GETLBTEXTLEN 得到編輯區域中文本的長度
CB_LIMITTEXT 發送限制編輯區域文本的消息
CB_RESETCONTENT 刪除所有的項
CB_SELECTSTRING 選中指定的字元串
CB_SETCURSEL 將游標設置在指定的位置
CB_SETDROPPEDWIDTH 設置下拉的寬度
CB_SETEDITSEL 選取編輯區域的文本
CBN_CLOSEUP 關閉組合框
CBN_DBLCLK 發送用戶雙擊組合框中項的消息
CBN_DROPDOWN 下拉時發送消息
CBN_EDITCHANGE 發送編輯區域改變的消息
CBN_EDITUPDATE 發送編輯區域改變的消息,但在更新之前發送
CBN_ERRSPACE 發送內存不夠的消息
CBN_KILLFOCUS 當組合框失去輸入焦點時發送該消息
CBN_SETFOCUS 設置輸入焦點