2013-12-22 27 views
-1

我在Windows 7机器上使用wxWidgets 2.9.5。wxWidgets listctrl multiselect GetNextItem错误?

当我使用shift选择多个wxlistctrl中的一个元素时,GetNextItem()仅返回所选第一个元素的索引。

即使从手动的例子:http://docs.wxwidgets.org/trunk/classwx_list_ctrl.html#ad8372c4619ad5ea55ad16889caa32e78

我连接不工作;因此,它返回首先调用GetNextItem()时选择的第一个元素的索引,但是当它第二次调用时返回-1。

long item = -1; 

for (;;) 
{ 
item = listctrl->GetNextItem(item,wxLIST_NEXT_ALL,wxLIST_STATE_SELECTED); 
if (item == -1) 
break; 
// this item is selected - do whatever is needed with it 
wxLogMessage("Item %ld is selected.", item); 
} 

有没有人不得不解决相同的问题? 谢谢。

+0

只是为了清楚起见:此问题中显示的代码确实有效,并且与已测试的代码(并包含错误)不相符。 –

回答

0

几乎完全一样的代码(请参阅MyFrame::OnShowSelInfo())在包含在wxWidgets中的listctrl示例中工作,所以我真的不知道为什么它不适用于您。你可以尝试重现样本中的问题吗?

+0

我看过样品之前,但至少在我的一个我甚至无法通过按住Shift键 – frankBang

+0

标记几个项目好吧,我想通了......多么愚蠢的错误,我最后删除了一个项目的循环,所以列表的长度发生了变化,并搞砸了所有东西 – frankBang

+0

解决的办法是将GetNextItem的第一个参数改为-1而不是'item' – frankBang