MFC常用控件:列表框控件

一、列表框控件简介
  列表框给出了一个选项清单,允许用户从中进行单项或多项选择,被选中的项会高亮显示。列表框可分为单选列表框和多选列表框,顾名思义,单选列表框中一次只能选择一个列表项,而多选列表框可以同时选择多个列表项。
  列表框也会向父窗口发送通知消息。这些通知消息含义如下:  
1. LBN_DBLCLK:用户用鼠标双击了一列表项,只有具有LBS_NOTIFY的列表才能发送该消息。
2. LBN_ERRSPACE:列表框不能申请足够的动态内存来满足需要。   
3. LBN_KILLFOCUS:列表框失去焦点。
4. LBN_SELCANCEL:当前的选择被取消,只有具有LBS_NOTIFY的列表框才能发送该消息。
5. LBN_SETFOCUS:列表框获得输入焦点。
6. WM_CHARTOITEM:当列表框收到WM_CHAR消息后,向父窗口发送该消息,只有具有LBS_WANTKEYBOARDINPUT风格的列表框才会发送消息   
7. WM_VKEYTOITEM:当列表框收到WM_KEYDOWN消息后,向父窗口发送该消息,只有具有LBS_WANTKEYBOARDINPUT风格的列表框才会发送该消息。
二、常用函数
1. int AddString(LPCTSTR lpszItem);
此函数用来向列表框中添加字符串。如果列表框指定了LBS_SORT风格,字符串就被以排序顺序插入到列表框中,如果没有指定LBS_SORT风格,字符串就被添加到列表框的结尾。
参数:lpszItem指定了要添加的字符串。
返回值:返回字符串在列表框中添加的位置。如果发生错误则返回LB_ERR,内存不够则返回LB_ERRSPACE。
2. int InsertString(int nIndex, LPCTSTR lpszItem);   
该函数用来在列表框中的指定位置插入字符串。与AddString函数不同的是,InsertString函数不会导致LBS_SORT风格列表框重新排序。不要在具有LBS_SORT风格的列表框中使用InsertString函数,以免破坏列表项的次序。   
参数:参数nIndex给出了插入位置(索引),如果值为-1,则字符串将被添加到列表的末尾。参数lpszItem指定了要插入的字符串。   
返回值:返回实际的插入位置,若发生错误,会返回LB_ERR或LB_ERRSPACE。  
3. int DeleteString(UINT nIndex);   
该函数用于删除指定的列表项。   
参数:nIndex指定了要删除项的索引。   
返回值:函数的返回值为剩下的列表项数目,如果nIndex超过了实际的列表项总数,则返回LB_ERR。
4. void ResetContent();
该函数用于清除所有列表项。
5. int GetText(int nIndex, LPCTSTR lpszBuffer) const;
void GetText(int nIndex, CString& rString) const;   
这两个成员函数用于获取指定列表项的字符串。
参数nIndex指定了列表项的索引。参数lpszBuffer指向一个接收字符串的缓冲区。引用参数rString则指定了接收字符串的CString对象。第一个版本的函数会返回获得的字符串的长度,若出错,则返回LB_ERR;第二个版本的函数则不会。
6. int GetCurSel()const;
该函数仅适用于单选列表框,用来返回当前被选择项的索引,如果没有列表项被选择或有错误发生,则函数返回LB_ERR。
7. int GetCount() const;
  返回值:返回列表框中列表项的数目,如果发生错误则返回LB_ERR。
int GetSel(int nIndex) const;
  参数:nIndex指定某个列表项的索引。
  返回值:返回nIndex制定的列表项的状态。如果此列表项倍选择了则返回一个正值,否则返回0,若发生错误则返回LB_ERR。
8. int SetSel(int nIndex, BOOL bSelect = TRUE);
  此函数用于多选列表框,使用它可以选择或取消选择指定的列表项。
  参数:nIndex指定某个列表项的索引,若为-1则相当于指定了所有列表项。bSelect为TRUE时选择制定列表项,否则取消选择列表项。
返回值:如果发生错误则返回LB_ERR。
9. int SetCurSel(int nSelect);
  该函数仅适用于单选列表框,用来选择指定的列表项。该函数会滚动列表框以使选择项可见。参数nIndex指定了列表项的索引,若为-1,那么将清除列表框中的选择。若出错函数返回LB_ERR。
10. int GetSelCount() const;
  该函数仅用于多重选择列表框,它返回选择项的数目,若出错函数返回LB_ERR。
11. int FindString(int nStartAfter, LPCTSTR lpszItem) const;
  该函数用于对列表项进行与大小无关的搜索。参数nStartAfter指定了开始搜索的位置,合理指定nStartAfter可以加快搜索速度,若nStartAfter为-1,则从头开始搜索整个列表。参数lpszItem指定了要搜索的字符串。函数返回与lpszItem指定的字符串相匹配的列表项的索引,若没有找到匹配项或发生错误,则会返回LB_ERR。FindString函数想从nStartAfter指定的位置开始搜索,若没有找到匹配项,则会从头开始搜索列表。只有找到匹配项,或对整个列表搜索完一遍后,搜索过程才会停止,所以不必担心会漏掉要搜索的列表项。
12. int SelectString(int nStartAfter, LPCTSTR lpszItem);
  该函数仅适用于单选列表框,用来选择与指定字符串相匹配的列表项。该函数会滚动列表框以使选择项可见。参数的意义及搜索的方法与函数FindString类似。如果找到了匹配的项,函数返回该项的索引,如果没有匹配的项,函数返回LB_ERR并且当前的选择不被改变。
三、实例
这里写图片描述