MFC: лучшее место для обработки сообщения контекстного меню? - PullRequest
1 голос
/ 27 мая 2011

Использование C ++ с MFC.Я использую элемент управления Grid, который происходит от CWnd (в частности, элемент управления MFC Grid на codeproject).Я хочу отобразить контекстное меню, когда пользователь щелкает правой кнопкой мыши на ячейке.Я думаю, что обработать сообщение ON_WM_CONTEXTMENU ().

Однако, где лучше всего это сделать, в OnContextMenu в моем (производном) классе управления сеткой или в OnContextMenu в классе диалогового окна, который содержитконтроль сетки?Есть ли соглашение в MFC?

Ответы [ 2 ]

3 голосов
/ 27 мая 2011

Если есть соглашение, я не заметил.

Я бы выбрал, основываясь на том, у кого есть информация, необходимая для построения меню, и кто будет обрабатывать команды, вытекающие из выбора меню.

0 голосов
/ 27 мая 2011

С точки зрения удобства использования я должен сказать, что контекстное меню содержит только вещи, которые на самом деле являются просто ярлыками для других элементов пользовательского интерфейса. Я привожу пример: в MS Word у вас есть контекстное меню «Копировать», если вы щелкнете правой кнопкой мыши по выделенному тексту. Пункт меню «Копировать» на самом деле является просто ярлыком для редактирования главного меню -> Копировать. Таким образом, с точки зрения удобства использования вашему приложению требуется меню (или кнопка) или все, что делает то же самое.

Теперь, обработка синуса в главном меню не может быть выполнена в самой сетке, почему контекстное меню должно обрабатываться в сетке? Мне это кажется противоречивым.

Обработка этого в диалоге, а не в самом элементе управления кажется мне более естественной. Это не связано с окружающей средой, которую вы используете. В C # я бы сделал то же самое.

...