我的程序中有一个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();
}
如何找出元素所在的列?
由于
答案 0 :(得分:0)
GetColumn()
仅适用于EVT_LIST_COL_XXX
个事件,即点击列本身,如文档中明确提到的那样。对于项目点击,您需要显式调用HitTest()并检查其返回值和ptrSubItem
输出参数值。