0

我的程序中有一个 listctrl,它有两列填充了很多元素。当用户通过右键单击其中一个时,我想知道该元素位于两列中的哪一列。

我的问题 - GetColumn() 函数返回 -1(又名未找到)或零 -> 即使我点击了第二列(应该是 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();
}

如何找出我的元素在哪一列?

谢谢

4

1 回答 1

0

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

于 2014-01-19T11:20:19.910 回答