这两天因为list control的问题耽误了不少时间。
主要原因是单线程没问题,多线程的时候就出现某些插入的行内容不显示,实际是setitemtext执行失败。
按照MSDN的例子是没啥问题可查的,但到codeguru上搜索了一番后,才明白,listcontrol的函数不是这样用的。
setitemtext的第一个参数应该是insertitem的返回值,如果不这样做就会在某些情况下出现未知的异常(如没有显示)。
我怀疑MSDN中的这段代码没有经过完全的测试,或者说仅仅是为了说明如何调用接口函数,而不是正确调用。
讲的比较清楚的可以参考如下:
http://discuss.itacumens.com/index.php?topic=27458
正确的使用insertitem和setitemtext的方法应该是
The InsertItem functions returns an index, which can be used to call other functions to operate on the row.
int nIndex = m_ListVw.InsertItem(0,"Item1"); m_ListVw.SetItemText(nIndex,1,"Item12"); m_ListVw.SetItemText(nIndex,2,"Item12"); |
阅读(1680) | 评论(4) | 转发(0) |