月饼馅料技术转让:本人从事月饼馅料生产及研发工作8年,熟知各种月饼馅料制作。联系人:王先生 联系电话:13736804844

CListCtrl中的一个错误(c++)

作者:hn911

特别说明:经过我再次测试,证明我的代码是错误的(删除colum不彻底,会遗留一个colum),原MSDN的示例代码是正确的(可以删除所有的colum)。感谢vanehu指出该错误!

出现此错误的原因:我太粗心了,我代码中多次创建了colum,导致MSDN的代码删除所有的colum后,又创建了部分colum。而我的修正代码,又没有测试。(因为我在程序中,最终没有使用删除colum的功能)

这段时间在用C++写程序,经常有用到MSDN。在MSDN中发现了一个微软的错误。(很难见啊,我用了3,4年的MSDN,才 发现了这一个错误)。
路径:MFC Library Reference 
CListCtrl::DeleteColumn 

问 题:MSDN2005(注:MSDN2008中该示例与MSDN2005的一样)在描述CListCtrl::DeleteColumn方法时的举例有错 误。
原MSDN示例如下:
Copy code
int nColumnCount = m_myListCtrl.GetHeaderCtrl()->GetItemCount();

// Delete all of the columns.
for (int i=0; i < nColumnCount; i++)
{
   m_myListCtrl.DeleteColumn(0);
}


正确的应为:
Copy code
int nColumnCount = m_myListCtrl.GetHeaderCtrl()->GetItemCount();

// Delete all of the columns.
for (int i=0; i < nColumnCount; i++)
{
   m_myListCtrl.DeleteColumn(i);
}



参考资料:
MSDN2005
MSDN2008
posted @ 2010-03-01 14:55 911 阅读(176) 评论(4) 编辑 收藏

 回复 引用   
#1楼2010-03-01 16:43 | vanehu[未注册用户]
楼主有试过么,实践出真知。
没试过就说别人错,这个不客观

 回复 引用 查看   
#2楼[楼主]2010-03-01 16:49 | 911      
@vanehu
已经经过测试。

 回复 引用   
#3楼2010-03-01 20:34 | vanehu[未注册用户]
@911
至少我测试的时候用MSDN的方法可以全部删掉,你提供的会剩下一个
你可以删掉之后使用GetItemCount获取Headctrl的大小。
另外,DeleteItem之后,Item已经减少了一个,如果你计数器一直加上去肯定是不对的。其实这样更直观:
if(m_myListCtrl.GetHeaderCtrl() != NULL)
{
while (m_myListCtrl.GetHeaderCtrl()->GetItemCount() > 0)
{
m_myListCtrl.DeleteColumn(0);
}
}
我不清楚你是怎么测试的

 回复 引用 查看   
#4楼[楼主]2010-03-02 08:25 | 911      
@vanehu
我再看看我的源代码。

Loading