1 / 1 / 0
Регистрация: 05.05.2009
Сообщений: 13
|
|||||||||||
1 | |||||||||||
Создание контекстного меню в MFC16.05.2009, 16:20. Показов 10214. Ответов 3
Метки нет (Все метки)
Есть список (лист бокс) в нем несколько строк, так вот я хотел чтобы по клику правой кнопкой, вывилось меню из пунктов ,."Удалить" и "редактировать".
(опишу что яделал, чтобы понять что не так) Сначала я начал пробовать делать через ресурсы, создал ресурс МЕНЮ, и там сделал МЕНю (+2 сабменю - "Удалить" и "редактировать") Но как его отобразить, я не знал, нашёл кое-где стрчоку как отобразить с помощью Loadmenu, но выводилась куча ошибок. Потом попрбовал сделать ка к в статье http://www.rsdn.ru/article/qna/ui/mnushow.xml Вот этот код
Помогите пожалуйста! (Visual Studio 2008) Добавлено через 11 минут 52 секунды ---- Ах, да, ошибки: Error 8 error C2046: illegal case Error 9 error C2065: 'lParam' : undeclared identifier Error 10 error C2065: 'lParam' : undeclared identifier Error 11 error C2065: 'hWnd' : undeclared identifier Error 12 error C2065: 'hInstance' : undeclared identifier Error 13 error C2065: 'hWnd' : undeclared identifier И всё, же, мой Cpp окна (коротко)
0
|
16.05.2009, 16:20 | |
Ответы с готовыми решениями:
3
Зависание VC++ при открытии контекстного меню MFC и меню меню в mfc Добавление пункта меню MFC |
48 / 48 / 8
Регистрация: 30.01.2009
Сообщений: 168
|
|
18.05.2009, 10:02 | 2 |
Оператор case используется только внутри оператора switch, с чем ты, собственно, WM_CONTEXTMENU пытаешься сравнивать? Перемести код из OnBnClickedButton3() в PreTranslateMessage(MSG* pMsg) (поставь там switch (pMsg->message)), либо используй MFC-шный обработчик сообщения WM_CONTEXTMENU - OnContextMenu(...).
Добавлено через 3 минуты 17 секунд И если уж взялся использовать MFC, используй класс CMenu.
0
|
48 / 48 / 8
Регистрация: 30.01.2009
Сообщений: 168
|
||||||
19.05.2009, 19:17 | 3 | |||||
Дополнительных вопросов не последовало, но раз уж я это написал - покажу, авось пригодится кому-нибудь.
Итак, как это делается на самом деле. Нам нужен ListBox со встроенным в него меню - вот именно так и нужно делать! Создаем класс-наследник от CListBox, помещаем в него меню и показываем последнее при нажатии правой кнопки мыши.
1
|
fanshtorm
|
||||||
09.04.2012, 16:23 | 4 | |||||
Сделал точно так же, но с CListCtrl-ом. Меню всплывает по нажатию правой кнопки мыши, но при выборе любого пункта меню не срабатывает код в теле условия "if (pMsg->message == WM_COMMAND)". То ли сообщение контролу вовсе не посылается, то ли не WM_COMMAND... Ни у кого нет мыслей на этот счёт?
Добавлено через 17 часов 54 минуты ХА!!! Я сам решил проблему: Сделал так: Добавил для своего лист-контрола обработчик события "NM_RClick" в котором написал:
Кстати, такой подход имеет одно приятное преимущество: прямо из этого метода теперь можно оперировать остальными контролами связанными с их переменными-классами через DDX_Control в этом диалоге. |
09.04.2012, 16:23 | |
09.04.2012, 16:23 | |
Помогаю со студенческими работами здесь
4
Загрузка иконок в меню используя MFC Как изменить подписи в меню? (MFC) Новые элементы меню не появляются (MFC) Как создать меню в mfc в msvs 2008? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |