我有一個遺留代碼,其中WIn 32編程完成。鼠標在其焦點外點擊時的隱藏/關閉菜單
在這裏,有一個托盤圖標,右鍵單擊時會啓動一個菜單。
但是,即使在其焦點區域外單擊時,菜單仍然存在。
當我在其他地方點擊鼠標時,如何關閉菜單?
像Qt這樣的框架可以很好地管理它。我是否必須跟蹤鼠標指針,捕獲點擊並查看它是否落在菜單區域之外?
代碼是遺留在C中,沒有使用面向對象的概念..我不喜歡我可以重寫這裏的東西。
請告訴,謝謝。
我有一個遺留代碼,其中WIn 32編程完成。鼠標在其焦點外點擊時的隱藏/關閉菜單
在這裏,有一個托盤圖標,右鍵單擊時會啓動一個菜單。
但是,即使在其焦點區域外單擊時,菜單仍然存在。
當我在其他地方點擊鼠標時,如何關閉菜單?
像Qt這樣的框架可以很好地管理它。我是否必須跟蹤鼠標指針,捕獲點擊並查看它是否落在菜單區域之外?
代碼是遺留在C中,沒有使用面向對象的概念..我不喜歡我可以重寫這裏的東西。
請告訴,謝謝。
閱讀在文檔底部的註釋爲TrackPopupMenu
功能:http://msdn.microsoft.com/en-us/library/windows/desktop/ms648002(v=vs.85).aspx
具體來說:
要顯示通知圖標的上下文菜單中,當前窗口 必須是前臺窗口在應用程序調用 TrackPopupMenu或TrackPopupMenuEx之前。否則,當用戶單擊菜單外部或 創建菜單(如果它是可見的)的窗口時,菜單不會 消失。如果當前窗口是子窗口 ,則必須將(頂層)父窗口設置爲前景 窗口。
因此,在這種情況下,當沒有實際的應用程序窗口時,我將哪個句柄傳遞給'SetForegroundWindow(HANDLE)'。菜單後面顯示的窗口可能只是任何應用程序。 – user1173240 2013-03-19 08:48:33
您必須有一個窗口,否則,您會在哪裏得到消息表明您的托盤圖標已被點擊? – 2013-03-19 08:52:34
感謝您的澄清。我會檢查出來的。 – user1173240 2013-03-19 09:39:47
有很多應用程序似乎沒有正確地做到這一點。你並不孤單:) – Deanna 2013-03-19 11:11:25