2015-03-19 17 views
0

我想讓我的wxWidgets應用程序中的菜單欄可切換,例如Firefox和Windows資源管理器正在這樣做。這意味着當它隱藏時,按下顯示的ALT鍵。這是相對容易的:我在成員變量m_pMenuBar中創建時保存菜單,並在時啓用菜單wxFrame::SetMenuBar(m_pMenuBar)並捕獲wxEVT_CHAR_HOOKwxWidgets中的可切換菜單欄(何時隱藏?)

但現在我想知道什麼時候再次禁用菜單。我知道禁用可以用wxFrame::SetMenuBar(nullptr)完成。很明顯,當在相應的wxEVT_MENU事件中單擊菜單項時。但是在支持這種可切換菜單的程序中,當您按下某個鍵(不是快捷鍵)或點擊屏幕某處(並且不要點擊菜單)時,菜單也會隱藏起來。感覺就像菜單「失去了焦點和消失」。由於我已經在拍攝wxEVT_CHAR_HOOK,所以隱藏在按鍵上將是可能的。鼠標的東西比較複雜。我嘗試了一個計時器來檢查鼠標按鈕是否被按下,但這看起來相當難看,並且在您選擇子菜單時不起作用。

所以我的問題是:什麼時候應該隱藏菜單?

非常感謝! jffmichi

回答

1

這看起來像是極少數情況下覆蓋wxApp::FilterEvent()將是適當的:一旦顯示菜單欄,設置一個標誌,並檢查它在你的方法的重寫版本,每當你得到一個鼠標事件。如何檢測點擊是否出現在菜單上仍然存在問題,您可能需要統計wxEVT_MENU_{OPEN,CLOSE},並且只在當前沒有菜單打開時關閉菜單欄。

最後請注意,您不應該嘗試在OS X下無法完全隱藏菜單欄(但您可以切換至全屏模式)執行此操作。