【发布时间】:2017-10-05 14:03:23
【问题描述】:
如何取消绑定已绑定的事件处理程序,如下所示?
MyFrame::MyFrame()
{
Bind(wxEVT_COMMAND_MENU_SELECTED,
[](wxCommandEvent&) {
// Do something useful
},
wxID_EXIT);
}
非常感谢您的第一个答案。我添加了一些额外的信息。
使用具体的 Functor 取消绑定事件处理程序的可能性已记录在案并且工作正常,但如果您使用 C++ 11 lambda 样式绑定某些东西,那么稍后将没有可用的 Functor 来调用 unbind 方法。如果相应的wxEvtHandler 应该被销毁,这会导致麻烦。
有没有“技巧”。 . .如果不是,我看不到使用 lambda 仿函数绑定的真实用例。 希望我错了。 . .
非常感谢
哈基
【问题讨论】:
-
@CamFerry,不,不是。解除绑定函数采用事件处理函数函数名称,这里没有带有 lambda 的名称。它可能在 C++11 中...