wxWidgets 无法接收鼠标右键单击
wxWidgets can't receive Right mouse click
我试图在 Windows 10 上的 wxWidgets 2.9.4 中向网格控件添加上下文菜单,虽然我可以让上下文菜单键工作,但右键单击却不行。现在我在 header
中有以下内容
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);
鼠标右键都不起作用。
您无法在 wxGrid
上绑定到这些事件的原因是它是一个复合 window,如 the documentation 的 "Accessors for component windows" 部分所述。因此,要使此代码正常工作,您需要调用 GetGridWindow()->Bind(...)
,例如。
或者,如果足够的话,您可以并且可能应该使用更高级别的事件,例如已经提到的 wxEVT_GRID_CELL_RIGHT_CLICK
。
我试图在 Windows 10 上的 wxWidgets 2.9.4 中向网格控件添加上下文菜单,虽然我可以让上下文菜单键工作,但右键单击却不行。现在我在 header
中有以下内容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);
鼠标右键都不起作用。
您无法在 wxGrid
上绑定到这些事件的原因是它是一个复合 window,如 the documentation 的 "Accessors for component windows" 部分所述。因此,要使此代码正常工作,您需要调用 GetGridWindow()->Bind(...)
,例如。
或者,如果足够的话,您可以并且可能应该使用更高级别的事件,例如已经提到的 wxEVT_GRID_CELL_RIGHT_CLICK
。