C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 Урок 17. Создаем контекстное меню 2 / Уроки C++ .NET / Visual C++ .NET

Visual C++.NET
Урок 17. Создаем контекстное меню 2

На прошлом уроке мы с вами посмотрели, как добавить в вашу программу контекстное меню. Вот еще один способ, как это можно сделать. Отличие этого второго способа от рассмотренного на прошлом уроке в том, что мы создаем наше меню в редакторе меню. И потом по его идентификатору загружаем. Вот как это делается:

Сначала создадим наше контекстное меню в редакторе. Для него можо сделать даже несколько pop-up меню, например два, как на этой картинке:

Меню в редакторе меню

Вообще говоря можно не создавать новое меню, а воспользоваться существующим - например, главным меню формы. Тогда в качестве контекстного меню можно будет использовать любой его пункт (вместе с подпунктами, естественно).

void CMFCTestView::OnRButtonDown(UINT nFlags, CPoint point)
{
    // Создаем и загружаем меню.
    CMenu menu, *submenu;
    menu.LoadMenu(IDR_CONTEXTMENU);
    // Приводим координаты.
    ClientToScreen(&point);
    submenu = menu.GetSubMenu(1);
    // Показываем контекстное меню.
    submenu->TrackPopupMenu(TPM_RIGHTALIGN, point.x, point.y, this);
    CView::OnRButtonDown(nFlags, point);
}

Обратите внимание, что для создания контекстного меню мы воспользовались двумя экземплярами класса CMenu. Второй из них мы используем для получения подменю из первого (нумерация, как и всегда в C, идет с нуля). Иметь контекстное меню в нашем случае будет два пункта - Item 3 и Item 4 (так как в качестве параметра метода GetSubMenu мы указали 1).