【问题标题】:What is the cleanest way to notify GUI to update in wxWidgets?通知 GUI 在 wxWidgets 中更新的最干净的方法是什么?
【发布时间】:2012-10-15 05:23:20
【问题描述】:

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

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

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

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

有人有什么建议吗?

【问题讨论】:

  • 这个回答太模糊了。用代码描述你所做的事情,但没有按预期工作。

标签: wxwidgets message-loop


【解决方案1】:

首先,所有控件都接收EVT_UPDATE_UI,因此您可以使用它,这样做非常简单——但也是最低效的,因此绝对不推荐用于套接字事件处理之类的东西(它可以用于检查套接字是否已连接)。

其次,Windows ::PostMessage() 的完全等价物是wxQueueEvent()(实际上以前称为wxPostEvent(),但新版本更可取)。 wxQueueEvent() 是线程安全的,因为它可以从辅助线程用于将事件发布到由主线程管理的 GUI 控件。

【讨论】:

    【解决方案2】:

    您可以使用与 Win32 应用程序相同的方法。您可以使用 wxPostEvent 函数创建自定义事件类并将其发送到窗口。关于这个有some docs

    不确定您对 wxUpdateUIEvent 的含义 - 根据我的经验,它工作得很好。什么控件不接收呢?您是否将 EVT_UPDATE_UI() 宏添加到事件表中?

    【讨论】:

      猜你喜欢
      • 2017-02-20
      • 2011-01-18
      • 1970-01-01
      • 1970-01-01
      • 2019-12-19
      • 1970-01-01
      • 2014-05-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多