【问题标题】:wxWidgets can't receive Right mouse clickwxWidgets 无法接收鼠标右键
【发布时间】:2018-11-08 18:34:32
【问题描述】:

我正在尝试在 Windows 10 上的 wxWidgets 2.9.4 中将上下文菜单添加到网格控件中,虽然我可以让上下文菜单键正常工作,但右键单击却没有。现在我在标题中有以下内容

void handle_contextMenu(wxContextMenuEvent& event);
void handle_rightButton(wxMouseEvent& event);

在构造函数中

Bind(wxEVT_CONTEXT_MENU, &DataGrid::handle_contextMenu, this);
Bind(wxEVT_RIGHT_UP, &DataGrid::handle_rightButton, this);

鼠标右键都不起作用。

【问题讨论】:

  • DataGrid 是什么类型的?为什么你想要 2 个处理程序?
  • DataGrid 是 wxGrid,我实际上并不想要 2 个处理程序,我只想要一个有效的处理程序。我已经分别尝试过,但是虽然键盘上的上下文菜单键适用于第一个,但鼠标右键对任何一个都不起作用。
  • 根据docs.wxwidgets.org/trunk/classwx_grid_event.html,你需要wxEVT_GRID_CELL_RIGHT_CLICK。
  • @Igor,谢谢。我正在查看通用事件处理,但没有意识到 wxGrid 有自己的事件。让它成为一个答案,我会接受它。

标签: windows contextmenu wxwidgets


【解决方案1】:

您无法绑定到wxGrid 本身上的这些事件的原因是它是一个复合窗口,如the documentation 的“组件窗口的访问器”部分所述。因此,要使此代码正常工作,您需要调用 GetGridWindow()->Bind(...),例如。

或者,如果足够的话,您可以并且可能应该使用更高级别的事件,例如已经提到的wxEVT_GRID_CELL_RIGHT_CLICK

【讨论】:

    猜你喜欢
    • 2012-10-17
    • 2014-01-26
    • 2014-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    相关资源
    最近更新 更多