我試圖將上下文菜單添加到我的應用程序中的(大)自定義控件中,但遇到了與何時創建它們有關的許多問題。wxWidgets和上下文菜單
有3種情況需要在按下菜單鍵和Shift + F10時右鍵單擊需要創建上下文菜單(除非我忘了一個...)。在所有情況下,菜單都是通過ContextMenu方法創建和顯示的。
右鍵還有其他一些特殊的東西,所以不應該總是創建一個上下文菜單。我正在處理各種鼠標事件,並根據需要調用ContextMenu,這一切都很好。
問題出在鍵盤生成的上下文菜單上。我在EVT_CONTEXT_MENU的控件中設置了一個處理程序,然後調用ContextMenu。在很多情況下,這兩個組合鍵似乎都被忽略了。有時候Shift + F10可以正常工作,但在相同的情況下,菜單鍵以某種方式調用我的鼠標右鍵單擊處理程序,導致不正確的行爲...
對於菜單鍵,我也嘗試處理鍵事件,菜單鍵似乎從來沒有在wxWidgets中引發這些雖然都是其他按鍵似乎很好地工作......
所以被莫名其妙的wxWidgets忽略的關鍵方法。只要控制權集中,他們就應該工作。當他們開始「工作」他們繼續工作,直到它再次失去焦點,但我不知道爲什麼他們不開始或導致他們開始工作(我不處理任何其他地方的任何上下文菜單或關鍵事件我的測試應用程序)。
菜單鍵事件如何進入我的EVT_RIGHT_UP處理程序而不是鍵事件或上下文菜單事件?
我認爲它是某種根本性錯誤我的wxWidgets的是如何處理這些鍵的理解,但是已經看的文檔周圍,在網上有一段時間我還沒有發現關於我的問題的任何信息。
我在Windows Vista上使用wxMSW 2.8.10。
正如我所說我使用wxContextMenuEvent,但由於某種原因它沒有被調用/觸發。我需要在我的控件中處理其他東西的鼠標事件,但這一點工作正常。它正是爲什麼wxContextMenuEvent不能可靠地調用windows上下文菜單組合鍵的原因。 – 2010-02-28 17:33:45
好吧,這解釋了爲什麼它以某種方式被困在鼠標處理程序中,我想我只需要檢查並跳過(-1,-1)處的任何鼠標事件。但是這並不能解釋爲什麼wxWidgets有時會完全放棄這個事件,也就是說,我的處理程序中沒有一個被調用菜單按鈕或shift + f10? – 2010-02-28 17:43:32
這很難說,我沒有'wxContextMenuEvent'單獨的問題。如果鍵盤事件不起作用,也許這是焦點問題?但是,無論如何,我不會在(-1,-1)處僅跳過(只)事件,除非上下文菜單需要被抑制,然後再爲所有座標,否則我會將它稱爲* all *事件。 – mghie 2010-02-28 17:48:41