• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Создание контекстного меню и окна свойств

  • Автор темы BFS
  • Дата начала
B

BFS

Подскажите, как сделать контекстное меню, в VC++, желательно в 8-ом (VisualStudio 2005);
значит MDI- MFC приложение, есть окно представления; (графический редактор); и чтобы в зависимости от места правого щелчка мышью показывались различные меню (предопределённое); каким образом формируются пункты этого меню, различные комбинации, вложения(подменю); каким образом связываются со стандартным меню(чтобы при выборе пункта в контекстном, автоматически отмечался соответственный пункт в осносвном меню); ещё очень интересует возможность создания в таком меню подменю "Свойства", и чтобы после выбора "Свойства", отображалось окно свойств данной фигуры(на которой находится указатель мыши);

Буду невероятно признателен за любую помощь!
Спасибо.
 
B

BFS

добавил такую функцию:

Код:
void CLastView::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CMenu MenuOne;

MenuOne.LoadMenuW(IDR_MENUPOPUP);
POINT cursor_pos;
::GetCursorPos (&cursor_pos);
MenuOne.GetSubMenu (0)->TrackPopupMenu( nFlags, cursor_pos.x, cursor_pos.y,this);

CView::OnRButtonDown(nFlags, point);
}

European: пользуйся, пожалуйста, тегами кода

нарисовал меню, всё работает; но как там поступить с окном свойств..? У меня уже это меню выскакивает как меню фигуры, тоесть допустим что MenuOne вызывается ТОЛЬКО тогда, когда мы кликнули на фигуре. В этом меню есть пункт Options. Должно появиться окошко, там можно будет менять толщину линий данной фигуры, её цвет, ..., будет кнопка "применить". Можно поподробнее о процессе создания такого окошка (формы, диалога), и о том, какие функции при выборе Options должны его вызывать; как инициализируется объект этого окна... тоесть, всё, чтобы эта штука работала! Не сочтите за издевательство, пожалуйста, неукого спросить,.. да что уж тут, больше некогда, а не неукого... Огромное спасибо тому, кто откликнется!
 
B

BFS

Ещё один вопрос назрел по этой теме:
Я создал класс Диалога, вручную ничего не писал - там вижла(vs2005) всё сама сделала. Я только добавил необходимые переменные в этот класс. Только вот обработчики событий - нажатий кнопок на форме совсем не хотят обрабатываться в C*View. Мне, кстати, тоже создаёт их вижла, я выбираю клас C*View, и вправду - там появляются функции-обработчики этих кнопок, даже всё заносится в MessagesMap! НО! эти функции так и не вызываются никогда! потом делаю по-другому: создаю ещё кнопку, её уже для обработки в созданном классе MyDialog, и там управление передаётся нормально!!? Так в чём причина, если я проделываю одни и те же действия, но для разных классв, а функция не вызывается.. зачем тогда предусмотрено это?
 
E

European

Ну как зачем? Сообщения диалога обрабатывает сам диалог, сообщения отображения (C*View) - само отображения... Это же логично! Хочешь чтобы отображение реагировало на сообщения от диалога, то в обработчиках сообщений диалога дергай методы отображения или транслируй сообщения отображению (grigsoft давал тебе пример в другой ветке)
 
V

v_klad

Как вызвать контекстное меню над элементом управления в диалоге кликом правой кнопки мышки? Точнее как определить что курсор находится именно над элементом управления?
И можно ли вызывать разные контекстные меню для разных столбцов в ListCtrl?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!