基于MSDN的ListBoxD 處理消息
(1)、LB_FINDSTRING 消息(一般查找)
wParam 在第一個(gè)條目被查找到之前的條目索引(也就是開始查找的索引位置)。當(dāng)搜索達(dá)到列表框的底部時(shí),搜索將重新回到由該參數(shù)指定的位置從頭查找。如果該參數(shù)為-1,將從列表框的起始索引(0)開始查找。
lParam 一個(gè)指向以NULL結(jié)尾的字符串,該字符串包含了將要搜索的內(nèi)容。搜索是大小寫敏感的。所以可以搜索任何大小寫組合的字符串形式。
Return Value 如果成功,返回第一個(gè)匹配的條目的索引,如果失敗,返回LB_ERR。
備注::如果你以自繪形式創(chuàng)建的列表框,該消息會(huì)返回一個(gè)匹配由lParam參數(shù)提供的值長整型的值。
(2)、LB_FINDSTRINGEXACT 消息(精確查找)
wParam 基于零的開始索引。當(dāng)搜索達(dá)到列表框的底部時(shí),將返回到開始索引處繼續(xù)進(jìn)行搜索。如果該參數(shù)為-1,將從列表框的開始處從頭執(zhí)行搜索。
lParam 指向被搜索字串的字符串指針。該字符串可以包含完整的文件名及擴(kuò)展。搜索是不分大小寫的。
Return Value 返回值是基于零的匹配條目的索引。當(dāng)失敗時(shí),返回LB_ERR。
Remarks 該函數(shù)僅在指定字符串和列表框中的條目的長度相等且每個(gè)字符均相等的情況才算匹配。如果一個(gè)應(yīng)用程序以自繪樣式創(chuàng)建列表框,則由該消息執(zhí)行的內(nèi)容將取決于LBS_SORT是否被使用。
(3)、LB_GETANCHORINDEX 消息 //獲得條目錨點(diǎn)的索引,錨點(diǎn)就是多選狀態(tài)下選擇的起始條目。
(4)、LB_GETCARETINDEX 消息 //返回在多選狀態(tài)下,具有焦點(diǎn)的條目的索引。該條目既可以被選中,也可以是沒被選中。
(5)、LB_GETCURSEL 消息 //獲得當(dāng)前被選條目的索引。僅在單選狀態(tài)的列表框有效。
Return Value 在單選狀態(tài)的列表框中,返回值是基于零的當(dāng)前選中條目的索引,如果未發(fā)現(xiàn)選中的條目,返回值是LB_ERR。
Remarks 不要給多選狀態(tài)的列表框發(fā)送該消息。為了獲得處于多選狀態(tài)的列表框的選中條目的索引,可以使用LB_GETSELITEMS消息。如果要獲得多選狀態(tài)下的列表框中哪一個(gè)條目具有焦點(diǎn),可以使用LB_GETSEL消息。如果將該消息發(fā)送給一個(gè)具有多選狀態(tài)的列表框,該消息返回具有焦點(diǎn)的條目索引。如果沒有條目被選中,返回 0.
(6)、LB_GETHORIZONTALEXTENT 消息 //如果列表框具有一個(gè)水平滾動(dòng)條,該消息獲得水平滾動(dòng)的寬度(單位像素)
Return Value 返回值是滾動(dòng)寬度(單位是像素)
Remarks 為了響應(yīng)該消息列表框必須已經(jīng)定義了WS_HSCROLL樣式。如果應(yīng)用程序并未給列表框定義水平擴(kuò)展(使用LB_SETHORIZONTALEXTENT),默認(rèn)的水平擴(kuò)展時(shí)0.注意:列表框并不會(huì)自動(dòng)更新水平擴(kuò)展。
(7)、LB_GETITEMDATA 消息 //獲得與指定的列表框中條目相關(guān)的程序自定義值。
(8)、LB_GETITEMHEIGHT //應(yīng)用程序發(fā)送該消息用以返回一個(gè)Listbox中條目的高度
wParam 指定基于0的listbox 中的條目。該索引僅在列表框使用 LBS_OWNERDRAWVARIABLE風(fēng)格時(shí)使用。否則,該值必須為0.
(9)、LB_GETITEMRECT //獲得列表框中條目的邊界矩形尺寸
wParam 條目的索引值。
lParam 指向一個(gè)RECT結(jié)構(gòu)的指針,該結(jié)構(gòu)用于接收列表框中條目的客戶坐標(biāo)值
(10)、LB_GETLOCALE //獲得當(dāng)前列表框的區(qū)域。可以使用這個(gè)區(qū)域來決定顯示文本正確的排序規(guī)則。
(11)、LB_GETSEL Message //獲得一個(gè)條目的選擇狀態(tài)。如果一個(gè)條目被選中,返回Yu值大于0,否則,返回值是0.如果發(fā)生錯(cuò)誤,返回LB_ERR.
(12)、LB_GETSELCOUNT Message //在具有多選狀態(tài)的列表框中,該消息獲得選中的條目的數(shù)量 。返回值是列表框中選中的條目的數(shù)量。如果列表框處于單選狀態(tài),返回值是LB_ERR。
(13)、LB_GETSELITEMS Message //在具有多選狀態(tài)的列表框中,該消息通過填充一個(gè)緩沖來保存被選中的條目。
wParam 選中條目數(shù)量的最大值。
lParam 足夠大的緩沖用于存儲(chǔ)整型值。
Return Value 返回值是放置在緩沖中的條目的數(shù)量。如果列表框處于單選狀態(tài),返回值是LB_ERR.
(14)、LB_GETTEXT //從列表框中獲得一個(gè)字符串。
wParam 所要返回的字符串。
lParam 接收字符串的緩沖器。它的類型是LPTSTR,之后將強(qiáng)化轉(zhuǎn)換為LPARAM。緩沖器必須具有足夠的空間開存儲(chǔ)字符串(包括結(jié)尾的NULL)。一個(gè)LB_GETTEXTLEN消息可以在應(yīng)用該消息之前用來獲得字符串長度(單位是TCHARS)。
Return Value 返回值是字符串長度(TCHARS)。不包括結(jié)尾的NULL字符。如果wParam未指定一個(gè)有效的索引,返回值LB_ERR
Remarks 如果以自繪樣式創(chuàng)建一個(gè)列表框,緩沖器指針將接受與條目(條目數(shù)據(jù))相關(guān)的值。
(15)、LB_GETTEXTLEN //獲得一個(gè)列表框中字符串的長度
wParam 字符串的索引。
lParam 未使用,必須為0
Return Value 返回值是字符串的長度,不包括結(jié)尾的NULL字符。在特定的情況下,該值事實(shí)上可能比文本的真實(shí)長度要大。如果wParam參數(shù)指向一個(gè)無效的索引,返回值是LB_ERR。
Remarks 在特定條件下,返回值將比真實(shí)的長度要大。這種情況發(fā)生在ANSI和Unicode混合時(shí)。
如果要獲得精確的長度,可以使用WM_GETTEXT,LB_GETTEXT 或 CB_GETLBTEXT消息,或 GetWindowText 函數(shù)。
(16)、LB_GETTOPINDEX Message //獲得第一個(gè)“可見”的條目的索引。初始化時(shí),第一個(gè)可見的條目是索引為0的條目,但如果列表框的發(fā)生滾動(dòng)之后,該索引值會(huì)發(fā)生變化。
返回值是第一個(gè)可見的條目的索引。
(17)、LB_INITSTORAGE Message //定位內(nèi)存用于存儲(chǔ)列表框中的條目。該消息在向列表框中加入大量條目時(shí)使用。
wParam 加入的條目數(shù)量。
lParam 內(nèi)存的量用于存儲(chǔ)條目字符串。(以字節(jié))。
Return Value如果消息成功,返回值是所有的條目數(shù)量。如果消息失敗,返回值是LB_ERRSPACE。
Remarks 該消息能夠幫助加速條目數(shù)大于100的列表框初始化進(jìn)程。它會(huì)預(yù)留一定量的內(nèi)存空間,這樣,接下來LB_ADDSTRING,LB_INSERTSTRING,LB_DIR 和 LB_ADDFILE消息會(huì)使用更少的時(shí)間。
(18)、LB_INSERTSTRING Message //向列表框中插入一個(gè)條目數(shù)據(jù)或字符串。不像LB_ADDSTRING 消息,該消息不會(huì)激活LBS_SORT樣式來對(duì)條目進(jìn)行排序。
wParam 插入字符串的位置。如果參數(shù)為-1,字符串將插入到列表框的尾部。
lParam 所要插入的字符串指針。如果以自繪的形式創(chuàng)建列表框,該參數(shù)的值會(huì)作為條目數(shù)據(jù)本身而不是字符串指針來存儲(chǔ)。可以使用LB_GETITEMDATA 和LB_SETITEDATA 消息來接收或修改條目數(shù)據(jù)。
Return Value 返回值是插入處的索引。如果發(fā)生錯(cuò)誤,返回值是LB_ERR。如果沒有足夠空間來存儲(chǔ)新的字符串,返回值LB_ERRSPACE。
(19)、LB_ITEMFROMPOINT //一個(gè)應(yīng)用程序發(fā)送這個(gè)消息用以返回基于0的位于ListBox內(nèi)的離指定的點(diǎn)位置最近一個(gè)條目
返回值中低位存儲(chǔ)的是最近條目,高位存儲(chǔ)的值取決于給定點(diǎn)的位置,如果該點(diǎn)位于客戶區(qū)內(nèi),則為0,否則為1
(20)、LB_SELITEMRANGE //在多選狀態(tài)下的列表框中選擇或取消選擇一個(gè)或多個(gè)連續(xù)條目。
wParam TRUE 代表選擇條目,F(xiàn)ALSE為取消選擇。
lParam 低位字指定第一個(gè)選擇的條目索引。高位字指定最后一個(gè)選擇的條目索引。
Return Value如果發(fā)生錯(cuò)誤,返回LB_ERR。
Remarks僅在具有多選狀態(tài)的列表框中使用該消息。該消息僅能用于前65536個(gè)條目。
(21)、LB_SELITEMRANGEEX //在多選狀態(tài)下的列表框中選擇一個(gè)或多個(gè)連續(xù)的條目。
wParam 指定選中條目中第一個(gè)條目的索引。
lParam 指定選中條目中最后一個(gè)條目的索引
(22)、LB_SETANCHORINDEX // 設(shè)置錨點(diǎn)條目——從該條目開始,一個(gè)多重選擇開始。一個(gè)多重選擇會(huì)跨越錨點(diǎn)條目和結(jié)尾條目間所有的條目
wParam 新錨點(diǎn)條目的索引。
lParam 該參數(shù)未使用。
Return Value 如果消息成功,返回值是0,如果消息失敗,返回值是LB_ERR。
(23)、LB_SETCARETINDEX //在位于多選狀態(tài)下的列表框中指定索引下設(shè)置焦點(diǎn)矩形。如果條目不可見,會(huì)自動(dòng)滾動(dòng)可見。
(24)、LB_SETCOLUMNWIDTH Message //對(duì)多列的列表框設(shè)置所有列的寬度(單位是像素)
wParam 所有列的寬度(像素)
lParam 未使用,可以為0
Return Value 無返回值
(25)、LB_SETCOUNT Message //設(shè)置由LBS_NODATA樣式而不是LBS_HASSTRINGS樣式創(chuàng)建的列表框的條目數(shù)量。
wParam 指定列表框中的條目數(shù)量。
lParam 未使用。
Return Value如果發(fā)生錯(cuò)誤,返回值是LB_ERR。如果沒有足夠的內(nèi)存空間,返回LB_ERRSPACE。
(26)、LB_SETCURSEL Message //選擇一個(gè)字符串,并將其所在的條目滾動(dòng)到視野內(nèi)。當(dāng)新的字符串被選定,列表框的高亮顯示將從原有的選中字符串移動(dòng)到這個(gè)新的字符串上。
wParam 指定字符串索引。如果該參數(shù)為-1,列表框不具有任何選中條目。
lParam 未使用,可以為0.
Return Value 如果發(fā)生錯(cuò)誤,返回LB_ERR。如果wParam為-1,則無論什么情況均返回LB_ERR
Remarks 該消息僅適用于單選狀體下的列表框。
(27)、LB_SETHORIZONTALEXTENT // 該消息用來設(shè)置列表框的寬度(單位是像素)。如果列表框的寬度小于設(shè)置的值,顯示水平滾動(dòng)條。如果列表框的寬度等于設(shè)置的值,則不顯示滾動(dòng)條。
LB_SETHORIZONTALEXTENT wParam = (WPARAM) cxExtent;
// 水平滾動(dòng)寬度 lParam = 0;
// 未使用,必須為0
(28)、LB_SETITEMHEIGHT //應(yīng)用程序通過發(fā)送該消息來設(shè)置ListBox中條目的高度(單位是像素)。
wParam = (WPARAM) index; // 條目索引lParam = MAKELPARAM(cyItem, 0);
lParam // 條目高度
(29)、LB_SETLOCALE
設(shè)置列表框的當(dāng)前區(qū)域。可以使用區(qū)域來決定顯示文本的正確排序規(guī)則。
wParam 指定區(qū)域標(biāo)識(shí)。該表示用于列表框添加文本時(shí)排序之用。
lParam 該參數(shù)未被使用。
Return Value 返回值是之前的區(qū)域標(biāo)識(shí)符。如果wParam參數(shù)指定一個(gè)未在系統(tǒng)中安裝的區(qū)域,返回值是LB_ERR,且當(dāng)前的列表框區(qū)域不會(huì)發(fā)生改變。
可以使用MAKELCID宏來構(gòu)建一個(gè)區(qū)域標(biāo)識(shí)符
(30)、LB_SETSEL //在多選狀態(tài)下的列表框中選擇一個(gè)字符串。
wParam 指定如何設(shè)置選擇。如果該參數(shù)為TRUE ,字符串被選中且高亮,如果為FALSE,移除高亮且字符串不再處于被選中狀態(tài)。
lParam 指定字符串的索引。如果該參數(shù)為-1,選擇的添加或刪除取決于wParam的值。
Return Value 如果有錯(cuò)誤,返回LB_ERR。
Remarks僅在多選狀態(tài)的列表框使用該消息才有效。
(31)、LB_SETTABSTOPS //設(shè)置列表框的移字鍵。
wParam 移字鍵編號(hào)。
lParam 編號(hào)數(shù)組的第一個(gè)編號(hào)。
(32)、LB_SETTOPINDEX //確保給定條目在列表框中式可見的
wParam 條目索引
lParam 未被使用。
Return Value 如果發(fā)生錯(cuò)誤,則返回LB_ERR.
Remarks 系統(tǒng)會(huì)滾動(dòng)列表框以使指定的條目出現(xiàn)在列表框的頂部或達(dá)到最大滾動(dòng)范圍
(33)、LB_SETITEMDATA Message // 設(shè)置與列表框中指定條目相關(guān)的值。
wParam 指定條目的索引。如果該值為-1,lParam值應(yīng)用于所有的列表框中的條目
lParam 指定與條目相關(guān)的值。
Return Value 發(fā)生錯(cuò)誤,返回LB_ERR.
Remarks 如果條目位于一個(gè)以自繪樣式創(chuàng)建的列表框中,該消息將替換LB_ADDSTRING 或 LB_INSERTSTRING 消息中l(wèi)Param參數(shù)的值。
//////////////////////////////////////////