我有一个小应用程序需要更新GUI元素,如果某些事件发生在较低级别,例如,套接字脱机,或类似的事情。
在Windows中,我可以使用PostMessage,它将通过链发送到所有Windows,并且所需的可以相应地更新。
如何在wxWidgets中实现类似的功能?我不能使用OnUpdateUI或类似的东西,因为有些控件似乎根本不处理它。
目标窗口可以是一个或多个,它们可以是框架或控件,所以我在这里有点困惑。
有人有建议吗?
答案 0 :(得分:2)
首先,所有控件都会收到EVT_UPDATE_UI
所以你可以使用它来实现它并且它非常简单 - 但也是最低效的,所以绝对不建议像套接字事件处理那样(它很好)用于检查套接字是否已连接但是。)
其次,Windows ::PostMessage()
的确切等价物是wxQueueEvent()
(以前曾被称为wxPostEvent()
,但最好是新版本)。 wxQueueEvent()
是线程安全的,因为它可以从辅助线程使用,将事件发布到由主线程管理的GUI控件。
答案 1 :(得分:1)
您可以使用与Win32应用相同的方法。您可以使用wxPostEvent函数创建自定义事件类并将其发送到Windows。对此有some docs。
不确定你对wxUpdateUIEvent的意思 - 根据我的经验,它的工作原理非常好。什么控件没有收到它?您是否将EVT_UPDATE_UI()宏添加到事件表?