Chinaunix首页 | 论坛 | 博客
  • 博客访问: 244553
  • 博文数量: 76
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 660
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-17 21:43
文章分类
文章存档

2011年(1)

2010年(9)

2009年(20)

2008年(46)

我的朋友

分类: C/C++

2008-12-05 16:18:50

在列表框类(CListBox)中有两个"长的有点相似的"成员函数,即InsertString(int nIndex,LPCTSTR lpsczItem)

与AddString(LPCTSTR lpsczItem),下面对这两个函数进行一下简单的个人分析:

这两个函数的返回类型都为int类型,都可被用来向列表中添加项目条.不同之出在于:

(1) InsertString 函数有两个参数,第一个参数为索引号,设定为-1时,项目条被插入到列表的末尾;

第二个参数与AddString 函数的唯一参数相同,为代表项目条中内容的字符串

 

(2) 使用InsertString ,第一个参数设定为-1时,列表中的项目条的排列顺序严格按照源代码中

语句的顺序排列;使用AddString时,列表中的项目条的顺序则按照英文字典序由上而下排列;

InsertString(第一个参数设定为-1)与AddString交叉使用时,各自保持原有的性质不变.

即InsertString(第一个参数设定为-1)设置的项目条之间的相对位置保持不变;AddString设置的

项目条之间的相对位置保持不变;但是,当两个函数设定的两种项目条之间的相对位置与具体源代码

中语句的实际位置有关.

 

当清除CListBox(m_list)里的所有内容时,粗心点的人会这样写

for (int i=0;i < m_list.GetCount();i++)
        {
           m_list.DeleteString( i );
         }

这样写的,没能实现预期效果,因为每执行一次m_list.DeleteString( i )时,m_list.GetCount()都是在变的(每次减1)。应该写成

int count = m_list.GetCount();

for (int i=0;i < count ;i++)
        {
           m_list.DeleteString( i );
         }

又或者更简单些:

while(m_list.GetCount())
   m_list.DeleteString(0);

阅读(6200) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-04-27 11:44:39

用m_list.ResetContent()清除所有内容不可以吗?