我正在尝试将按钮连接到不同类中的两个不同功能。问题是,每当我连接第二个函数时,与第一个函数的连接似乎都消失了
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);
我很感激任何解决这个问题的建议
答案 0 :(得分:3)
找到的第一个事件处理程序首先获取事件,如果它不处理event.Skip()
作为其处理的一部分,则不会调用其他处理程序。因此,如果要为事件使用多个处理程序,则需要确保事件处理程序调用{{1}}。有关详细信息,请参阅the event handling processing overview。
另请注意,在多个位置处理命令事件(例如wxEvent::Skip()
)通常是一个坏主意,即让程序员和用户都感到困惑。你希望按钮点击只能处理一次,虽然你可以有多个处理程序,但它不太可能是个好主意。
答案 1 :(得分:0)
第二个Connect调用将替换第一个。
可能有一个方法(比如onXXXButtonClicked)调用class1 :: func1和class2 :: func2,并将按钮连接到onXXXButtonClicked。