按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
void ResetContent();
该函数用于清除所有列表项。
5 .GetCount()函数
该成员函数声明如下:
int GetCount() const;
该函数返回列表项的总数,若出错则返回 LB_ERR 。
·119 ·
…………………………………………………………Page 129……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
6 .FindString() 函数
该成员函数声明如下:
int FindString(int nStartAfter;LPCTSTR lpszItem) const;
该函数用于对列表项进行与大小写无关的搜索。参数 nStartAfter 指定了开始搜索的位置;
合理指定 nStartAfter 可以加快搜索速度,若 nStartAfter 为…1,则从头开始搜索整个列表。参
数 lpszItem 指定了要搜索的字符串。函数返回与 lpszItem 指定的字符串相匹配的列表项的索
引,若没有找到匹配项或发生了错误,则会返回 LB_ERR 。FindString 函数先从 nStartAfter
指定的位置开始搜索,若没有找到匹配项,则会从头开始搜索列表。只有找到匹配项,或对
整个列表搜索完一遍后,搜索过程才会停止,所以不必担心会漏掉要搜索的列表项。
7 .GetText()函数
该成员函数声明如下:
int GetText(int nIndex;LPTSTR lpszBuffer) const;
void GetText(int nIndex;CString& rString) const;
这两个成员函数用于获取指定列表项的字符串 。参数 nIndex 指定了列表项的索引。参数
lpszBuffer 指向一个接收字符串的缓冲区 。引用参数 rString 则指定了接收字符串的 CString 对
象。第一个版本的函数会返回获得的字符串的长度,若出错,则返回 LB_ERR ;第二个版本
的函数则不会。
8.GetTextLen()函数
该成员函数声明如下:
int GetTextLen(int nIndex) const;
该函数返回指定列表项的字符串的字节长度。参数 nIndex 指定了列表项的索引 。若出错
则返回 LB_ERR 。
9 .GetItemData()函数
该成员函数声明如下:
DWORD GetItemData(int nIndex) const;
每个列表项都有一个 32 位的附加数据 。该函数返回指定列表项的附加数据,参数 nIndex
指定了列表项的索引。若出错则函数返回 LB_ERR 。
10.SetItemData()函数
该成员函数声明如下:
int SetItemData(int nIndex; DWORD dwItemData);
该函数用来指定某一列表项的 32 位附加数据。参数 nIndex 指定了列表项的索引。
dwItemData 是要设置的附加数据值。
11.GetSel()函数
该成员函数声明如下:
·120 ·
…………………………………………………………Page 130……………………………………………………………
第 5 章 常用控件
int GetSel(int nIndex) const;
该函数返回指定列表项的状态。参数 nIndex 指定了列表项的索引 。如果查询的列表项被
选择了,函数返回一个正值,否则返回 0,若出错则返回 LB_ERR 。
12.GetCurSel()函数
该成员函数声明如下:
int GetCurSel() const;
该函数仅适用于单选择列表框,用来返回当前被选择项的索引,如果没有列表项被选择
或有错误发生,则函数返回 LB_ERR 。
13.SetCurSel()函数
该成员函数声明如下:
int SetCurSel(int nSelect);
该函数仅适用于单选择列表框,用来选择指定的列表项。该函数会滚动列表框以使选择
项可见。参数 nIndex 指定了列表项的索引,若为…1,那么将清除列表框中的选择。若出错函
数返回 LB_ERR 。
14.SelectString()函数
该成员函数声明如下:
int SelectString(int nStartAfter;LPCTSTR lpszItem);
该函数仅适用于单选择列表框,用来选择与指定字符串相匹配的列表项。该函数会滚动
列表框以使选择项可见。参数的意义及搜索的方法与函数 FindString 类似。如果找到了匹配
的项,函数返回该项的索引,如果没有匹配的项,函数返回 LB_ERR 并且当前的选择不被改
变。
15.GetSelCount()函数
该成员函数声明如下:
int GetSelCount() const;
该函数仅用于多重选择列表框,它返回选择项的数目,若出错函数返回 LB_ERR 。
16.SetSel()函数
该成员函数声明如下:
int SetSel(int nIndex;BOOL bSelect = TRUE);
该函数仅适用于多重选择列表框,它使指定的列表项选中或落选。参数 nIndex 指定了列
表项的索引,若为…1,则相当于指定了所有的项。参数 bSelect 为 TRUE 时选中列表项,否则
使之落选。若出错则返回 LB_ERR 。
17.GetSelItems()函数
该成员函数声明如下:
int GetSelItems(int nMaxItems; LPINT rgIndex) const;
·121 ·
…………………………………………………………Page 131……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
该函数仅用于多重选择列表框,用来获得选中的项的数目及位置。参数 nMaxItems 说明
了参数 rgIndex 指向的数组的大小。参数 rgIndex 指向一个缓冲区,该数组是一个整型数组,
用来存放选中的列表项的索引。函数返回放在缓冲区中的选择项的实际数目,若出错函数返
回 LB_ERR 。
18.SetItemRange()函数
该成员函数声明如下:
int SetItemRange(BOOL bSelect;int nFirstItem;int nLastItem);
该函数仅用于多重选择列表框,用来使指定范围内的列表项选中或落选。参数 nFirstItem
和 nLastItem 指定了列表项索引的范围 。如果参数 bSelect 为 TRUE,那么就选择这些列表项,
否则就使它们落选。若出错函数返回 LB_ERR 。
技巧:实现列表框的提示条(可以显示完整的列表框的项目文本)
用一个 CListBox 派生类实现宿主(owner…draw )列表框,这个列表框的项目宽度超过了列表框本身
的宽度,因此当鼠标指针指向大宽度的列表框项时,希望显示一个类似 Toolbar 的提示窗口,在窗口
中显示完整的列表框项目文本。
附带光盘下的工程演示列表框提示条的实现,主要是创建了可重用窗口类 CPopupText 。
CPopupText 类会根据提示文本的长度自己决定弹出窗口的大小。它的字体默认值与状态行显示字体
相同(由 SystemParametersInfo(SPI_GETNONCLIENTMETRICS)返回的 NONCLIENTMETRICS 结构
成员 lfStatusFont 定义),设置 SW_SHOWNA 是很重要的,因为你不想使提示窗口为活动窗口,而
只是显示它。另外,CPopupText 还提供一个专门的函数 CPopupText::ShowDelayed,它的功能是在显
示提示窗口之前设置一个毫秒级延时,如果延时为零,则立刻显示提示窗口,你可以使用这个特点来
替代对 ShowWindow 的调用。如果要隐藏提示窗口或取消 ShowDelayed,调用 CPopupText::Cancel 。
实例 5…2:实现列表框的提示条实例。源代码在光盘中“05实例 5…2ListTest ”目录下。
5。6 组合框(bo box )控件
5。6。1 组合框控件的使用
组合框是一种传统控件,把一个编辑框和一个单选择列表框结合在了一起。用户既可以
在编辑框中输入,也可以从列表框中选择一个列表项来完成输入。组合框分为简易式
(Simple )、下拉式(Dropdown )和下拉列表式(Drop List )3 种。简易式组合框包含一个编
辑框和一个总是显示的列表框。下拉式组合框同简易式组合框类似,二者的区别在于单击下
拉箭头后是否会弹出列表框。下拉列表式组合框也有一个下拉的列表框,但它的编辑框是只
读的,不能输入字符。
Windows 中比较常用的是下拉式和下拉列表式组合框,在集成开发环境(IDE )中就大
·122 ·
…………………………………………………………Page 132……………………………………………………………
第 5 章 常用控件
量使用了这两种组合框 。二者都具有占地小的特点,这在界面日益复杂的今天是十分重要的。
下拉列表式组合框的功能与列表框类似。下拉式组合框的典型应用是作为记事列表框使用,
既把用户在编辑框中敲入的东西存储到列表框组件中,这样当要重复同样的输入时,可以从
列表框组件中选取而不必在编辑框组件中重新输入。在集成开发环境(IDE )中的 Find 对话
框中就可以找到一个典型的下拉式组合框。
应用一个列表框控件时,主要应遵循下列原则。
o 在创建组合框时指定 CBS_DROPDOWNLIST 风格。
o 要限制列表项的数目,以防止内存不够。
o 如果在编辑框中输入的字符串不能与列表框组件中的列表项匹配,那么应该把该字符
串插入到列表框中的 0 位置处。最老的项处于列表的末尾。如果列表项的数目超出了
限制,则应把最老的项删除。
o 如果在编辑框中输入的字符串可以与列表框组件中的某一项完全匹配,则应该先把该
项从列表的当前位置删除,然后在将其插入列表的 0 位置处。
组合框控件会向父窗口发送控件通知消息,主要的通知消息如表 5…12 所示的。
表 5…12 组合框控件的通知消息
消息 含义
CBN_CLOSEUP