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

Тема в разделе "MS Visual C++", создана пользователем BFS, 24 окт 2007.

  1. BFS

    BFS Гость

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

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

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
  3. BFS

    BFS Гость

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

    Код (Text):
    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 должны его вызывать; как инициализируется объект этого окна... тоесть, всё, чтобы эта штука работала! Не сочтите за издевательство, пожалуйста, неукого спросить,.. да что уж тут, больше некогда, а не неукого... Огромное спасибо тому, кто откликнется!
     
  4. BFS

    BFS Гость

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

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

    v_klad Гость

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

Поделиться этой страницей