2012-10-15 32 views
0

我有一個小應用程序需要更新GUI元素,如果某些事件發生在較低級別,例如套接字脫機或類似情況。在wxWidgets中通知GUI更新的最簡潔的方法是什麼?

在Windows中,我可以使用PostMessage將通過鏈發送到所有Windows,並且所需的可以相應地更新。

如何在wxWidgets中實現類似的功能?我不能使用OnUpdateUI,或類似的東西,因爲一些控件似乎根本沒有處理。

目標窗口可能是一個或多個,它們可能是框架或控件,所以我在這裏有點困惑。

有沒有人有建議?

+0

這太模糊了回答。用代碼描述你所做的事情,並不像你期望的那樣工作。 – ravenspoint

回答

1

您可以使用與Win32應用程序相同的方法。您可以使用wxPostEvent函數創建自定義事件類並將其發送到窗口。有關於此的some docs

不知道你是什麼意思關於wxUpdateUIEvent - 從我的經驗來看,它工作得很好。哪些控件不會收到它?您是否將EVT_UPDATE_UI()宏添加到事件表中?

1

首先,所有的控件都會收到EVT_UPDATE_UI,所以你可以使用它,這是一個非常簡單的做法 - 但也是效率最低的,所以絕對不推薦用於套接字事件處理之類的東西(檢查是否正確插座連接或不通過)。

其次,Windows ::PostMessage()的確切等效物爲wxQueueEvent()(實際上過去稱爲wxPostEvent(),但新版本更可取)。 wxQueueEvent()是線程安全的,它可以從輔助線程使用,將事件發佈到由主線程管理的GUI控件。

相關問題