WXWIDGETS连接多个功能

wxwidgets connect multiple functions

本文关键字:功能 连接 WXWIDGETS      更新时间:2023-10-16

我正在尝试将按钮连接到不同类中的两个不同功能。问题是,每当我连接第二个函数时,与第一个函数的连接似乎都消失了

windowpointer->Connect( wxbuttonID, wxEVT_COMMAND_BUTTON_CLICKED,
(wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) &class1::func1, NULL, (wxEvtHandler*) myclass1);
windowpointer->Connect( wxbuttonID, wxEVT_COMMAND_BUTTON_CLICKED,
(wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) &class2::func2, NULL, (wxEvtHandler*) myclass2);

我将不胜感激任何解决此问题的建议

找到的第一个事件处理程序首先获取事件,如果它没有调用event.Skip()作为其处理的一部分,则不会调用其他处理程序。因此,如果要对事件使用多个处理程序,则需要确保事件处理程序确实调用wxEvent::Skip()。有关详细信息,请参阅事件处理处理概述。

另请注意,在多个位置处理命令事件(如 wxEVT_BUTTON)通常是一个坏主意,即让程序员和用户都感到困惑。您希望按钮单击只处理一次,虽然您可以有多个处理程序,但这不太可能是一个好主意。

第二个连接调用将替换第一个。

也许有一个方法(比如 onXXXButtonClicked)调用 class1::func1 和 class2::func2,并将按钮连接到 onXXXButtonClicked。