列表控件可以看作是功能增强的ListBox,它提供了四种风格,而且可以同时显示一列的多中属性值。MFC中使用CListCtrl类来封装列表控件的各种操作。通过调用BOOL Create.创建一个窗口,dwStyle中可以使用以下一些列表控件的专用风格:
LVS_ICON ,LVS_SMALLICON ,LVS_LIST, LVS_REPORT 这四种风格决定控件的外观,同时只可以选择其中一种,分别对应:大图标显示,小图标显示,列表显示,详细报表显示
LVS_EDITLABELS 结点的显示字符可以被,对于报表风格来讲可的只为第一列。
LVS_SHOWSELALWAYS 在失去焦点时也显示当前选中的结点
LVS_SINGLESEL 同时只能选中列表中一项
首先你需要设置列表控件所使用的ImageList,如果你使用大图标显示风格,你就需要以如下形式调用:
CImageList* SetImageList.
如果使用其它三种风格显示而不想显示图标你可以不进行任何设置,否则需要以如下形式调用:
CImageList* SetImageList.
int InsertItem.插入行
nItem:指明插入位置
lpszItem:为显示字符。
除LVS_REPORT风格外其他三种风格都只需要直接调用InsertItem就可以了,但如果使用报表风格就必须先设置列表控件中的列。
int InsertColumn. 插入列iCol:为列的位置,从零开始lpszColumnHeading:为显示的列名nFormat:为显示对齐方式nWidth:为显示宽度nSubItem:为分配给该列的列索引。
BOOL SetItemText.设置每列的显示字符
nItem:为行位置
nSubItem:为列位置
lpszText:为显示字符
下面的代码演示了如何设置多列并插入数据:
m_list.SetImageList.//设置ImageList
m_list.InsertColumn.//设置列
m_list.InsertColumn.
m_list.InsertColumn.
m_list.InsertItem.//插入行
m_list.SetItemText.//设置该行的不同列的显示字符
m_list.SetItemText
COLORREF GetTextColor/BOOL SetTextColor:用于得到/设置显示的字符颜色。
COLORREF GetTextBkColor/BOOL SetTextBkColor:用于得到/设置显示的背景颜色。
void SetItemCount:用于得到添加进列表中项的数量。
BOOL DeleteItem:用于删除某一项
BOOL DeleteAllItems:将删除所有项。
BOOL SetBkImage:用于设置背景位图。
CString GetItemText:用于得到某项的显示字符。
列表控件的消息映射同样使用ON_NOTIFY宏,形式如同:ON_NOTIFY,wNotifyCode为通知代码,id为产生该消息的窗口ID,memberFxn为处理函数,函数的原型如同void OnXXXList,其中pNMHDR为一数据结构,在具体使用时需要转换成其他类型的结构。对于列表控件可能取值和对应的数据结构为:
LVN_BEGINLABELEDIT 在开始某项字符时发送,所用结构:
NMLVDISPINFO
LVN_ENDLABELEDIT 在结束某项字符时发送,所用结构:
NMLVDISPINFO
LVN_GETDISPINFO 在需要得到某项时发送,(如得到某项的显示字符)所用结构:NMLVDISPINFO
关于ON_NOTIFY有很多内容,将在以后的内容中进行详细讲解。