在wxWidgets中通知GUI更新的最简洁方法是什么?

时间:2012-10-15 05:23:20

标签: wxwidgets message-loop

我有一个小应用程序需要更新GUI元素,如果某些事件发生在较低级别,例如,套接字脱机,或类似的事情。

在Windows中,我可以使用PostMessage,它将通过链发送到所有Windows,并且所需的可以相应地更新。

如何在wxWidgets中实现类似的功能?我不能使用OnUpdateUI或类似的东西,因为有些控件似乎根本不处理它。

目标窗口可以是一个或多个,它们可以是框架或控件,所以我在这里有点困惑。

有人有建议吗?

2 个答案:

答案 0 :(得分:2)

首先,所有控件都会收到EVT_UPDATE_UI所以你可以使用它来实现它并且它非常简单 - 但也是最低效的,所以绝对不建议像套接字事件处理那样(它很好)用于检查套接字是否已连接但是。)

其次,Windows ::PostMessage()的确切等价物是wxQueueEvent()(以前曾被称为wxPostEvent(),但最好是新版本)。 wxQueueEvent()是线程安全的,因为它可以从辅助线程使用,将事件发布到由主线程管理的GUI控件。

答案 1 :(得分:1)

您可以使用与Win32应用相同的方法。您可以使用wxPostEvent函数创建自定义事件类并将其发送到Windows。对此有some docs

不确定你对wxUpdateUIEvent的意思 - 根据我的经验,它的工作原理非常好。什么控件没有收到它?您是否将EVT_UPDATE_UI()宏添加到事件表?