一:詞條簡介
CObject←CCmdTarget←CWnd←CListBox
CListBox類提供Windows列表框的功能。列表框顯示項的列表,如用戶可以見到和選擇的檔案名稱稱。在單選列表框裡,用戶只可選擇一個項。在多選列表框裡,可選擇許多項。當用戶選擇某項時,其高亮顯示且列表框給父視窗傳送一個通知訊息。
可從對話模板或直接在你的代碼中創建列表框。直接創建時,構造CListBox對象,再調用Create成員函式創建Windows列表框控制項並將其附加給CListBox對象。要在對話模板中使用列表框,可在對話框類中聲明一個CListbox 變數,再在對話框類的DoDataExchange中使用DDX_Control連線成員變數到此控制項(當向對話框類中添加控制項變數時,ClassWizard自動為你實現)。
構造函式可以是從CListBox派生的類的一個單步進程。為派生類寫構造函式並從中調用Create。如果要處理由列表框傳送到其父親(通常為從CDialog派生的類)的Windows通知訊息,為每個訊息添加訊息映射入口和訊息處理成員函式到父類。
每個訊息映射入口有以下形式:
ON_Notification( id,memberFxn )
id 指定傳送通知的列表框控制項的子視窗,memberFxn 是編寫處理通知的父成員函式名的地方。
父函式原型如下:
afx_msg void memberFxn( );
下面是可能的訊息映射入口列表和描述它們可能被傳送到父親的情況:
ON_LBN_DBLCLK 用戶雙擊列表框中的字元串。只有LBS_NOTIFY風格的列表框才會傳送此通知訊息。
ON_LBN_ERRSPACE 列表框不能重新分配足夠的記憶體來滿足請求。
ON_LBN_KILLFOCUS 列表框正失去輸入焦點。
ON_LBN_SELCANCEL 當前列表框選擇被取消。此訊息只有在列表框是LBS_NOTIFY風格時才傳送。
ON_LBN_SELCHANGE 列表框中的選擇可能改變。如果選擇被CListBox::SetCurSel成員函式改變,則通知不傳送。此通知只適用於LBS_NOTIFY風格的列表框。無論何時用戶按下箭頭鍵,即使選擇未改變,LBN_SELCHANGE通知訊息都被傳送給多選列表框。
ON_LBN_SETFOCUS 列表框正在接收輸入焦點。
ON_WM_CHARTOITEM 一個無字元串的自繪製列表接受WM_CHAR訊息。
ON_WM_VKEYTOITEM LBS_WANTKEYBOARDINPUT風格的列表框接受WM_KEYDOWN訊息。
如果在對話框中構造一個CListBox對象(通過對話資源),當用戶關閉對話框時,CListBox對象自動毀棄。
如果在視窗中構造一個CListBox對象,可能需要毀棄CListBox對象。如果在棧上創建CListBox對象,它會自動毀棄。如果使用new函式在堆上創建CListBox對象,必須對此對象調用delete來在用戶關閉父視窗時毀棄它。
如果在CListBox對象中分配記憶體,可覆蓋CListBox析構程式釋放分配的記憶體。
#include <afxwin.h>
請參閱:CWnd, CButton, CComboBox, CEdit, CScrollBar, CStatic
二:類成員
CListBox類的成員
構造函式 CListBox 構造一個CListBox對象
初始化 Create 創建Windows列表框並附加給CListBox對象
InitStorage 為列表框的項和字元串預分配記憶體塊
一般操作 GetCount 返回列表框中的字元串數目
GetHorizontalExtent 返回列表框的水平寬度,用像素表示
SetHorizontalExtent 設定列表框的水平寬度,用像素表示
GetTopIndex 返回列表框中第一個可見字元串的索引
SetTopIndex 設定列表框中第一個可見字元串的基於零的索引
GetItemData 返回與列表框有關的32位值
GetItemDataPtr 返回指向列表框的指針
SetItemData 設定列表框有關的32位值
SetItemDataPtr 設定指向列表框的指針
GetItemRect 返回當前顯示的列表框項的相應矩形
ItemFromPoint 返回與某點最近的列表框項的索引
SetItemHeight 設定列表框中項的高度
GetItemHeight 確定列表框中項的高度
GetSel 返回列表框某項的選擇
GetText 拷貝某列表框項到緩衝區
GetTextLen 返回列表框的位元組長
SetColumnWidth 設定多列列表框的列寬
SetTabStops 設定列表框製表鍵停止位置
GetLocale 獲取列表框的地點標識符
SetLocale 設定列表框的地點標識符
單選操作 GetCurSel 返回列表框中當前選擇串的基於零的索引
SetCurSel 選擇一個列表框字元串
多選操作 SetSel 在多選列表框中選擇或不選某個列表框項
GetCaretIndex 確定在多選列表框中有焦點矩形的項的索引
SetCaretIndex 設定焦點矩形到多選列表框中的指定的索引項
GetSelCount 返回多選列表框中當前選擇的字元串的數目
GetSelItems 返回列表框中當前選擇的字元串的索引
SelItemRange 選擇/不選多選列表框中的一些字元串
SetAnchorIndex 設定多選列表框的錨點以開始擴展選擇
GetAnchorIndex 獲取列表框當前錨點項的基於零的索引
字元串操作 AddString 添加一個字元串到列表框中
DeleteString 從列表框中刪除一個字元串
InsertString 在列表框中指定位置插入一個字元串
ResetContent 清空列表框所有入口
Dir 從當前目錄添加檔案名稱稱到列表框中
FindString 在列表框中查找一個字元串
FindStringExact 查找與指定的字元串匹配的第一個列表框字元串
SelectString 查找並選擇單選列表框中的一個字元串
可覆蓋的函式 DrawItem 當自繪製列表框的一個可視部分改變時,被框架調用
MeasureItem 當自繪製列表框創建時,被框架調用來確定列表框維數
CompareItem 被框架調用以確定一系列列表框中某新項的位置
DeleteItem 當用戶從自繪製列表框中刪除某項時,被框架調用
VKeyToItem 覆蓋以提供LBS_WANTKEYBOARDINPUT風格列表框的設定所需的定製WM_KEYDOWN
CharToItem 覆蓋以提供不含字元串的自繪製列表框定製WM_CHAR
三:構造函式
CListBox::CListBox
CListBox( );
說明:
分兩步構造一個CListBox對象。首先調用構造函式CListBox,再調用Create,初始化Windows列表框並將其附加給CListBox。
請參閱:CListBox::Create