我有一個小應用程序需要更新GUI元素,如果某些事件發生在較低級別,例如套接字脫機或類似情況。在wxWidgets中通知GUI更新的最簡潔的方法是什麼?
在Windows中,我可以使用PostMessage將通過鏈發送到所有Windows,並且所需的可以相應地更新。
如何在wxWidgets中實現類似的功能?我不能使用OnUpdateUI,或類似的東西,因爲一些控件似乎根本沒有處理。
目標窗口可能是一個或多個,它們可能是框架或控件,所以我在這裏有點困惑。
有沒有人有建議?
我有一個小應用程序需要更新GUI元素,如果某些事件發生在較低級別,例如套接字脫機或類似情況。在wxWidgets中通知GUI更新的最簡潔的方法是什麼?
在Windows中,我可以使用PostMessage將通過鏈發送到所有Windows,並且所需的可以相應地更新。
如何在wxWidgets中實現類似的功能?我不能使用OnUpdateUI,或類似的東西,因爲一些控件似乎根本沒有處理。
目標窗口可能是一個或多個,它們可能是框架或控件,所以我在這裏有點困惑。
有沒有人有建議?
您可以使用與Win32應用程序相同的方法。您可以使用wxPostEvent函數創建自定義事件類並將其發送到窗口。有關於此的some docs。
不知道你是什麼意思關於wxUpdateUIEvent - 從我的經驗來看,它工作得很好。哪些控件不會收到它?您是否將EVT_UPDATE_UI()宏添加到事件表中?
首先,所有的控件都會收到EVT_UPDATE_UI
,所以你可以使用它,這是一個非常簡單的做法 - 但也是效率最低的,所以絕對不推薦用於套接字事件處理之類的東西(檢查是否正確插座連接或不通過)。
其次,Windows ::PostMessage()
的確切等效物爲wxQueueEvent()
(實際上過去稱爲wxPostEvent()
,但新版本更可取)。 wxQueueEvent()
是線程安全的,它可以從輔助線程使用,將事件發佈到由主線程管理的GUI控件。
這太模糊了回答。用代碼描述你所做的事情,並不像你期望的那樣工作。 – ravenspoint