直接调用事件处理程序

2023-12-02

直接从我的代码调用事件处理程序时遇到问题。两年前我在这里发现了同样的问题。原问题

但线me_InsertCommentText(wxCommandEvent());未编译(mingw32-gcc 4.8、win7、codeblocks、wxFormBuilder)

错误:没有匹配的函数可用于调用“mjpgen_wdDialog::me_InsertCommentText(wxCommandEvent)” 注:候选人是: 注意:void mjpgen_wdDialog::me_InsertCommentText(wxCommandEvent&)

对我来说,这似乎是由引用参数调用引起的。 我怎样才能让它发挥作用?


关于使用命名临时变量的答案在技术上是正确的,但重要的是您实际上不应该首先这样做。处理程序应该只从 wxWidgets 调用,而不是调用一些OnFoo(wxFooEvent&)你应该直接重构你的代码以调用一些新的DoFoo() from OnFoo()然后打电话DoFoo()如果需要的话,可以从其余代码中获取。

使用 C++11 时这变得更加简单,因为您甚至不需要OnFoo()在这种情况下,可以写

whatever->Bind(wxEVT_FOO, [=](wxCommandEvent&) { DoFoo(); });

以避免额外的功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

直接调用事件处理程序 的相关文章

随机推荐