LISTBOX消息

列表框主要用於輸入,它允許用戶從所列出的表項中進行單項或多項選擇,被選擇的項呈高亮度顯示.列表框具有邊框,並且一般帶有一個垂直滾動條.列表框分單選列表框和多重選擇列表框兩種.單選列表框一次只能選擇一個列表項,而多重選擇列表框可以進行多重選擇.對於列表項的選擇,
應用程序用CreateWindowEx創建列表框控件時,可根據控件的用途在下表中選擇部份常數來設定其風格屬性(style)。 
     常數                                                    說明  
LBS_DISABLENOSCROLL   固定顯示垂直滾動條。未指定本項時,當列表未超出窗口,垂直滾動條自動隱藏。 
LBS_EXTENDEDSEL       使用鍵盤“SHIFT”鍵或另指定鍵加鼠標進行多選。 
LBS_HASSTRINGS        含有字符串的自繪式列表框.應用程序在自繪式列表框進行自繪時可以用LB_GETTEXT消息來取得列表項的文本。 
LBS_MULTICOLUMN       多列列表框,帶有水平滾動條。應用程序可以用 LB_SETCOLUMNWIDTH 消息來爲列表框指定列數。 
LBS_MULTIPLESEL       支持多重選擇。列表項的選擇狀態隨着用戶對該項單擊或雙擊鼠標而翻轉。 
LBS_NODATA            本項已不被支持。 
LBS_NOINTEGRALHEIGHT  列表框的尺寸由應用程序而不是Windows指定.通常,Windows指定尺寸會使列表項的某些部分隱藏起來。 
LBS_NOREDRAW          禁止刷新。當選擇發生變化時防止列表框被更新,可發送WM_SETREDRAW來改變該風格。 
LBS_NOSEL             禁止選擇,列表項只能看,不能被選擇。 
LBS_NOTIFY            當用戶單擊或雙擊鼠標時通知父窗口。 
LBS_OWNERDRAWFIXED    指定自繪式列表框,即由父窗口負責繪製列表框的內容,並且列表項有相同的高度。在控件被創建時父窗口將收到WM_MEASUREITEM 消息,當需要重繪時父窗口將收到 WM_DRAWITEM 消息。 
LBS_OWNERDRAWVARIABLE 指定自繪式列表框,並且列表項有不同的高度.在控件被創建時父窗口將收到WM_MEASUREITEM消息,當需要重繪時父窗口將收到 WM_DRAWITEM 消息。 
LBS_SORT              使插入列表框中的項按字母升序排列. 
LBS_STANDARD          使用默認風格,相當於指定了邊框,垂直滾動條,字母升序排列和鼠標單雙擊通知消息這幾項風格 
LBS_USETABSTOPS       使列表框在顯示列表項時識別並擴展製表符(08h),缺省的製表寬度是32個對話框單位。 
LBS_WANTKEYBOARDINPUT 響應鍵盤輸入。當控件擁有鍵盤輸入焦點時,允許接收父窗口接收WM_VKEYTOITEM和WM_CHARTOITEM消息,輸入字符。

應用程序可以通過調用SendMessage向控件發送如下消息來設定和查詢控件各種參數。
   uMsg             wParam          lParam               說明 
LB_ADDFILE            0            件名地址           增加文件名。 
LB_ADDSTRING          0            符串地址           追加一個列表項。如果指定了LBS_SORT風格,表項將被重排序,否則將被追加在列表框的最後一項。 
LB_DELETESTRING     列表項序號           0            刪除指定的列表項, 
LB_DIR              DDL_ARCHIVE    指向通配符地址     在列表框中列出文件名,必須是當前路徑內,符合指定通配符,存檔屬性的文件名。 
LB_DIR              DDL_DIRECTORY  指向通配符地址     在列表框中列出當前路徑的子文件夾。子文件夾名前後將加上一對方括號"[*]" 
LB_DIR              DDL_DRIVES     指向通配符地址     在列表框中列出本機的所有驅動器名。驅動器名前後將加上一對方括號和減號"[-*-]" 
LB_DIR              DDL_EXCLUSIVE  指向通配符地址     只列出指定屬性的文件名,默認情況下是所有可讀寫文件都列出。如果沒有指定任何文件屬性,則不列出文件名。 
LB_DIR              DDL_HIDDEN     指向通配符地址     列出隱藏屬性的文件名。 
LB_DIR              DDL_READONLY   指向通配符地址     列出只讀屬性的文件名。 
LB_DIR              DDL_READWRITE  指向通配符地址     列出讀寫屬性的文件名。 
LB_DIR              DDL_SYSTEM     指向通配符地址     列出系統屬性的文件名。 
LB_FINDSTRING       開始表項序號   字符串地址         查找匹配字符串,忽略大小寫,從指定開始表項序號開始查找,當查到某表項的文本字符串的前面包括指定的字符串則結束,找不到則轉到列表框第一項繼續查找,直到查完所有表項,如果wParam爲-1則從列表框第一項開始查找,如果找到則返回表項序號,否則返回LB_ERR。如:表項字符串爲"abc123"和指定字串"ABC"就算匹配。 
LB_FINDSTRINGEXACT  開始表項序號   字符串地址         查找字符串,忽略大小寫,與LB_FINDSTRING不同,本操作必須整個字符串相同。如果找到則返回表項序號,否則返回LB_ERR。 
LB_GETANCHORINDEX      0               0              返回鼠標最後選中的項的索引 
LB_GETCARETINDEX       0               0              返回具有矩形焦點的項的索引 
LB_GETCOUNT            0               0              返回列表項的總項數,若出錯則返回LB_ERR. 
LB_GETCURSEL           0               0              本操作僅適用於單選擇列表框,用來返回當前被選擇項的索引,如果沒有列表項被選擇或有錯誤發生,則返回LB_ERR. 
LB_GETHORIZONTALEXTENT 0               0              返回列表框的可滾動的寬度(象素) 
LB_GETITEMDATA        索引             0              每個列表項都有一個32位的附加數據.該函數返回指定列表項的附加數據。若出錯則函數返回LB_ERR. 
LB_GETITEMHEIGHT      索引             0              返回列表框中某一項的高度(單位:象素) 
LB_GETITEMRECT        索引            RECT結構地址    獲得列表項的客戶區的RECT
LB_GETLOCALE          0               0               取列表項當前用於排序的語言代碼,當用戶使用LB_ADDSTRING向組合框中的列表框中添加記錄並使用LBS_SORT風格進行重新排序時,必須使用該語言代碼。返回值中高16位爲國家代碼。 
LB_GETSEL             索引            0               返回指定列表項的狀態。如果查詢的列表項被選擇了,函數返回一個正值,否則返回0,若出錯則返回LB_ERR。 
LB_GETSELCOUNT        0               0               本操作僅用於多重選擇列表框,它返回選擇項的數目,若出錯函數返回LB_ERR. 
LB_GETSELITEMS        數組的大小      緩衝區          本操作僅用於多重選擇列表框,用來獲得選中的項的數目及位置。參數lParam指向一個整型數數組緩衝區,用來存放選中的列表項的索引。wParam說明了數組緩衝區的大小。本操作返回放在緩衝區中的選擇項的實際數目,若出錯函數返回LB_ERR. 
LB_GETTEXT            索引            緩衝區          用於獲取指定列表項的字符串。參數lParam指向一個接收字符串的緩衝區.wParam則指定了接收字符串的列表項索引。返回獲得的字符串的長度,若出錯,則返回LB_ERR。 
LB_GETTEXTLEN         索引            0               返回指定列表項的字符串的字節長度。wParam指定了列表項的索引.若出錯則返回LB_ERR。 
LB_GETTOPINDEX        0               0               返回列表框中第一個可見項的索引,若出錯則返回LB_ERR. 
LB_INITSTORAGE        表項數          內存字節數      本操作只適用於Windows95版本,當你將要向列表框中加入很多表項或有很大的表項時,本操作將預先分配一塊內存,以免在今後的操作中一次一次地分配內存,從而加快程序運行速度。 
LB_INSERTSTRING       索引            字符串地址      在列表框中的指定位置插入字符串。wParam指定了列表項的索引,如果爲-1,則字符串將被添加到列表的末尾。lParam指向要插入的字符串。本操作返回實際的插入位置,若發生錯誤,會返回LB_ERR或LB_ERRSPACE。與LB_ADDSTRING不同,本操作不會導致LBS_SORT風格的列表框重新排序。建議不要在具有LBS_SORT風格的列表框中使用本操作,以免破壞列表項的次序。 
LB_ITEMFROMPOINT      0               位置            獲得與指定點最近的項的索引,lParam指定在列表框客戶區,低16位爲X座標,高16位爲Y座標。 
LB_RESETCONTENT       0               0               清除所有列表項。 
LB_SELECTSTRING       開始表項序號    字符串地址      本操作僅適用於單選擇列表框,設定與指定字符串相匹配的列表項爲選中項。本操作會滾動列表框以使選擇項可見。參數的意義及搜索的方法與LB_FINDSTRING類似。如果找到了匹配的項,返回該項的索引,如果沒有匹配的項,返回LB_ERR並且當前的選中項不被改變。 
LB_SELITEMRANGE       TRUE或FALSE     範圍            本操作僅用於多重選擇列表框,用來使指定範圍內的列表項選中或落選.參數lParam指定了列表項索引的範圍,低16位爲開始項高16位爲結束項。如果參數wParam爲TRUE,那麼就選擇這些列表項,否則就使它們落選。若出錯函數返回LB_ERR。 
LB_SELITEMRANGEEX     起點            終點            本操作僅用於多重選擇列表框,若指定終點大於起點則設定該範圍爲選中,若指定起點大於終點則設定該範圍爲落選。 
LB_SETANCHORINDEX     索引            0               設置鼠標最後選中的表項成指定表項 
LB_SETCARETINDEX      索引            TRUE或FALSE     設置鍵盤輸入焦點到指定表項,若lParam爲TRUE則滾動到指定項部份可見,若lParam爲FALSE則滾動到指定項全部可見。 
LB_SETCOLUMNWIDTH     寬度(點)        0               設置列的寬度。 
LB_SETCOUNT           項數            0               設置表項數目 
LB_SETCURSEL          索引            0               本操作僅適用於單選擇列表框,設置指定的列表項爲當前選擇項。本操作會滾動列表框以使選擇項可見。參數wParam指定了列表項的索引,若爲-1,那麼將清除列表框中的選擇。若出錯函數返回LB_ERR。 
LB_SETHORIZONTALEXTENT 寬度(點)       0               設置列表框的滾動寬度。 
LB_SETITEMDATA         索引           數據值          更新指定列表項的32位附加數據。
LB_SETITEMHEIGHT       索引           高度(點)        指定列表項顯示高度,帶有LBS_OWNERDRAWVARIABLE(自繪列表項)風格的控件,只設置由wParam指定項的高度,其它風格將更新所有的列表項的高度。 
LB_SETLOCALE           語言代碼       0               取列表項當前用於排序的語言代碼,當用戶使用LB_ADDSTRING向組合框中的列表框中添加記錄並使用LBS_SORT風格進行重新排序時,必須使用該語言代碼。返回值中高16位爲國家代碼。 
LB_SETSEL              TRUE或FALSE    索引            本操作僅適用於多重選擇列表框,它使指定的列表項選中或落選。參數lParam指定了列表項的索引,若爲-1,則相當於指定了所有的項。參數wParam爲TRUE時選中列表項,否則使之落選。若出錯則返回LB_ERR。 
LB_SETTABSTOPS         站數           索引順序表      設置列表框的光標(輸入焦點)站數及索引順序表。 
LB_SETTOPINDEX         索引           0               用來將指定的列表項設置爲列表框的第一個可見項,該函數會將列表框滾動到合適的位置。wParam指定了列表項的索引.若操作成功,返回0值,否則返回LB_ERR。

當用戶在列表框上進行各種操作時,其父窗口將收到WM_COMMAND通知消息,同時wParam的低16位帶控件的ID。lParam帶控件句柄(hWnd),wParam的高16位帶有如下表的消息代碼。
 消息代碼           說明 
LBN_DBLCLK    用戶單擊了列表項。 
LBN_ERRSPACE  列表框無法申請到足夠的內存空間。 
LBN_KILLFOCUS 列表框失去輸入焦點。 
LBN_SELCANCEL 取消選擇列表項。 
LBN_SELCHANGE 列表框的選擇項即將被改變。 
LBN_SETFOCUS  列表框得到鍵盤輸入焦點。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章