wxListCtrl GetColumn()错误?

时间:2014-01-18 17:09:53

标签: wxwidgets listctrl

我的程序中有一个listctrl,它有两列填充了大量元素。当用户通过右键单击其中一个时,我想知道元素所在的两列中的哪一列。

我的问题 - GetColumn()函数返回-1(aka not found)或零 - >即使我点击了第二列(应该是1 - 它们从0开始)。

我看了一下sample / listctrl,但即使在那里,即使我点击另一列,GetColumn()总是返回1。

我在Windows 7上使用wxWidgets 2.9.5。

这里我认为应该有效的代码但是没有:

Connect(ID_LISTBOX,wxEVT_LIST_ITEM_RIGHT_CLICK,wxListEventHandler(X::OnRightClick));

....
void X::OnRightClick(wxListEvent& event)
{
    int a = event.GetColumn(); // returns - 1 aka not found
    int b = wxListItem(event.GetItem()).GetColumn();    // returns zero regardless     of the column

event.Skip();
}

如何找出元素所在的列?

由于

1 个答案:

答案 0 :(得分:0)

GetColumn()仅适用于EVT_LIST_COL_XXX个事件,即点击列本身,如文档中明确提到的那样。对于项目点击,您需要显式调用HitTest()并检查其返回值和ptrSubItem输出参数值。