2011-05-26 62 views
1

在MFC中使用C++。我正在使用從CWnd派生的網格控件(特別是代碼項目上的MFC網格控件)。我想在用戶右鍵單擊單元格時顯示上下文菜單。我的想法是處理ON_WM_CONTEXTMENU()消息。MFC:處理上下文菜單消息的最佳位置?

但是,在我的(派生)網格控件類中的OnContextMenu中,還是在保存網格控件的對話框類中的OnContextMenu中,哪裏是處理此問題的最佳位置? MFC中是否有一個約定?

回答

3

如果有一個約定,我沒有注意到。

我會根據誰擁有建立菜單所需的信息以及誰來處理菜單選擇產生的命令。

+0

起初我並不認爲這回答了它,因爲爲了有一個分離的設計,我將命令操作委託給一個單獨的服務層類型類。所以我覺得誰叫這個服務類並不重要。但後來我意識到我的對話類有對服務類的引用。 – User 2011-05-26 21:08:17

0

從可用性的角度來看,我不得不說,上下文菜單隻包含事實上僅僅是其他UI元素的快捷方式。我舉一個例子:在MS Word中你有一個上下文菜單「複製」,以防你右鍵點擊選定的文本。 「複製」菜單項實際上只是主菜單的編輯 - >複製的快捷方式。所以從易用性的角度來看,您的應用程序需要一個菜單​​(或一個按鈕)或任何完全相同的東西。

現在,正弦處理主菜單不能在網格本身完成,爲什麼應該在網格中處理高程菜單?對我來說這似乎不一致。

在對話框中而不是在控件本身中處理它似乎更加自然。這與您正在使用的環境無關。在C#中,我會做同樣的事情。

+0

好的,我可能誤解了你的問題。你的問題是:「在哪裏顯示競爭菜單」或「在哪裏處理點擊上下文菜單」? – 2011-05-27 13:46:57

+1

問題是在哪裏處理WM_CONTEXTMENU消息,並且您爲該消息執行的操作是顯示上下文菜單。 – 2011-05-27 16:00:36