Контекстное меню открыть в программе

Теперь давайте рассмотрим контекстные меню (рис.148 и 149) более подробно. В контекстных меню есть команды, которые используются редко, так как их проще вызывать не из контекстного меню, а просто производя какое либо действие мышкой.

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

Пункт Изменить применяется очень редко. Дело в том что для большинства файлов пункты Открыть и Изменить будут выполнять одно и тоже действие – открытие файла. Но есть специальные командные файлы, при открытии которых запускаются команды, которые они содержат. Именно для таких файлов и удобно использовать пункт Изменить.

В контекстном меню могут появляться дополнительные элементы, так как некоторые программы могут в него помещать свои инструменты. Так, например, вы видите пункт «Сканировать Текстовый документ.txt» (рис.148). Этот пункт был добавлен антивирусной программой, которая была установлена на моем компьютере.

Открыть с помощью отсутствует в контекстном меню.Пропало «открыть с помощью»

Следующий пункт Открыть с помощью иногда бывает очень полезен. Дело в том, что у вас на компьютере может быть установлено несколько программ, работающих с одними и теми же типами файлов. Т.е. у вас на компьютере может быть установлен проигрыватель музыкальных файлов и программа для редактирования музыкальных файлов.

Когда вы запускаете музыкальный файл из программы Проводник, то файл открывается и проигрывается в программе-проигрывателе. Но если вы захотите отредактировать музыкальный файл, например, подрезать его или изменить громкость, то вам понадобится программа-редактор. В этом случае вы можете воспользоваться опцией Открыть с помощью и выбрать из предложенного списка программ нужную в настоящий момент вам. В этом списке будут перечислены все программы, которые умеют работать с файлами данного типа (рис.151).

Открыть с помощью
Рис. 151. Открыть с помощью

В нашем случае мы можем выбрать одну из двух программ – WordPad и Блокнот. Эти две программы умеют работать с текстовыми файлами. О том, как операционная система Windows понимает, какие программы умеют работать с какими типами файлов, мы поговорим чуть позже.

Следующая опция контекстного меню Восстановить прежнюю версию связана с возможностью Windows создавать архивные копии файлов и папок. Об этой возможности в этом курсе рассказываться не будет, поэтому и пункт этот мы пропускаем.

Следующий пункт меню позволяет отправить объект, на котором вызвано контекстное меню, в одну из программ или создать его копию (рис.152). Большинство из этих опций связаны с возможностями, о которых мы еще не разговаривали, поэтому мы в дальнейшем вернемся к этому меню. Но так как о копировании мы уже знаем, то последние два пункта (рис. 152) нам уже по зубам.

Пропало контекстное меню «Открыть с помощью»

В вашем случае будут отображаться не только диск С и D, а все локальные диски вашего компьютер. Выбрав из контекстного меню нужный диск, мы автоматически отправим копию файла, на котором было вызвано контекстное меню на этот диск, т.е. в корневую папку.

Отправить
Рис. 152. Отправить

Ну а дальше идут уже известные нам пункты Вырезать, Копировать, Удалить и Переименовать. Есть еще пункт Создать ярлык и о нем мы поговорим сразу, как только разберемся со свойствами файла. Но перед тем как мы выберем Свойства в контекстном меню, давайте более подробно остановимся на понятии файла.

Читайте также:
Как сделать скрин программы 1 с

Домашнее задание:

  1. Запустите программу Проводник и изучите ее содержимое. На сколько логических дисков разбит жесткий диск вашего компьютера? Какие буквы за ними закреплены? Есть ли на вашем компьютере устройство для чтения CD или DVD дисков?
  2. Попробуйте запустить программу Проводник всеми способами, описанными в уроке. Выберите способ удобный вам.
  3. Поперемещайтесь по структуре ваших папок с помощью программы Проводник. Выбирайте папку в области 1 (рис.144) и изучайте ее содержимое в области 2.
  4. Зайдите в любую папку на вашем компьютере (желательно расположенную «поглубже» в структуре файлов и папок) и в адресной строке программы Проводник вызовите путь (рис.147). Разберитесь с этой текстовой записью адреса папки. Это очень важный момент, так как обычно путь к файлам и папкам указывается именно в виде такой записи. Поэтому подобная запись вам встретится еще неоднократно.
  5. Изучите контекстное меню, вызванное на файле (рис.148) и папке (рис.149). Сравните их.

Источник: pc-azbuka.ru

Как отобразить контекстное меню?

Прежде чем отображать контекстное меню, его необходимо загрузить из ресурсов приложения или создать его прямо на лету. Рассмотрим оба способа.

Вариант 1. Создание меню «на лету»

Меню создаётся с помощью функции CreatePopupMenu . Это очень простая функция, которая не принимает параметров и возвращает хэндл созданного меню. В этом меню изначально нет ни одного пункта. Добавить пункты можно, используя функции AppendMenu и InsertMenuItem . Например:

HMENU hPopupMenu = CreatePopupMenu(); AppendMenu(hPopupMenu, MF_STRING, ID_EDIT_UNDO, «); // Undo Ctrl+Z AppendMenu(hPopupMenu, MF_SEPARATOR, 0, 0); // ————— AppendMenu(hPopupMenu, MF_STRING, ID_EDIT_CUT, «Cu); // Cut Ctrl+X AppendMenu(hPopupMenu, MF_STRING, ID_EDIT_COPY, «); // Copy Ctrl+C AppendMenu(hPopupMenu, MF_STRING, ID_EDIT_PASTE, «); // Paste Ctrl+V

Этот код создаёт стандартное меню, содержащее пункты Undo/Cut/Copy/Paste.

Вариает 2. Загрузка меню из ресурсов

Загрузить меню из ресурсов приложения можно, используя функцию LoadMenu . Передавайте ей дескриптор модуля и идентификатор ресурса, содержащего нужное меню. Теоретически, можно использовать также функцию LoadMenuIndirect , но на практике контекстное меню редко отображают столь окольными путями.

Меню, которое размещается в ресурсах приложения, не является всплывающим, и его невозможно отобразить как контекстное. Поэтому вы должны поучить одно из его подменю с помощью функции GetSubMenu и отобразить его. Учитывая эту особенность, программисты часто создают в редакторе ресурсов фиктивное меню с одним единственным пунктом, с которым и связывается нужное всплывающее меню (рисунок 1).

ПРИМЕЧАНИЕ
В некоторых случаях можно даже не создавать отдельного меню, а «позаимствовать» одно из подменю главного. Например, при щелчке правой кнопкой на панели инструментов или строке состояния уместно отобразить подменю View из главного меню приложения.

Вот фрагмент кода, который загружает меню из ресурсов, а затем извлекает самое первое подменю.

HMENU hMenu, hSubMenu; hMenu = LoadMenu(hInstance, MAKEINTRESOURCE(IDR_MENU1)); hSubMenu = GetSubMenu(hMenu, 0);

Отображение меню

Для отображения контекстного меню в Win32 API предусмотрена функция TrackPopupMenu(Ex) . В MFC ей соответствует функция CMenu::TrackPopupMenu . Все эти функции выполняют следующие действия: отображают контекстное меню в заданной точке экрана, запускают собственный цикл сообщений, в котором отслеживают выбор пользователя, а в конце, когда пользователь выбрал какой-то пункт или закрыл меню, уведомляют программу о его выборе.

Рассмотрим прототип функции TrackPopupMenu .

BOOL TrackPopupMenu( HMENU hMenu, // хэндл всплывающего меню UINT uFlags, // опции int x, // горизонтальная позиция int y, // вертикальная позиция int nReserved, // зарезервированный параметр, д. б. 0 HWND hWnd, // хэндл окна-владельца меню CONST RECT *prcRect // параметр игнорируется );

Читайте также:
Программы как определить ip адрес компьютера

Параметр hMenu определяет всплывающее меню, которое следует отобразить. Параметры x и y задают положение меню на экране, а hWnd — окно, которое будет получать все сообщения от меню (этот параметр не может быть равен NULL ). Параметры nReserved и prcRect не используются. Что касается опций, их полный список можно найти в документации. Я хочу обратить ваше внимание только на флаг TPM_RETURNCMD . Если он не задан, программа получит уведомление о выборе пользователя в виде сообщения WM_COMMAND . Если же его задать, функция TrackPopupMenu просто вернёт в программу идентификатор выбранного пользователем пункта меню, не отправляя никаких сообщений.

Уничтожение меню

По окончании работы с меню его следует уничтожить вызовом DestroyMenu . Эта функция получает один параметр — хэндл меню, которое подлежит уничтожению. Обратите внимание, что меню, полученное с помощью GetSubMenu , уничтожать не надо. Оно будет удалено в процессе уничтожения родительского меню, которое вы загрузили с помощью LoadMenu .

WM_CONTEXTMENU

Итак, мы научились отображать контекстное меню. Осталось ответить на последний вопрос: в каком месте программы вызывать рассмотренные выше функции. Первое, что приходит в голову — отобразить меню в ответ на сообщение WM_RBUTTONUP . Но предпочтительнее делать это в обработчике другого сообщения — WM_CONTEXTMENU . У этого сообщения есть целый ряд преимуществ перед WM_RBUTTONUP .

  • Координаты курсора мыши передаются обработчику сразу в экранных координатах и их не придётся конвертировать для передачи в TrackPopupMenu .
  • Дочерние окна, у которых нет собственного контекстного меню, автоматически пересылают WM_CONTEXTMENU родительскому окну. Благодаря этому вы можете, к примеру, написать контекстное меню для диалога, и оно будет вызываться также для всех контролов в этом диалоге (кроме контролов, имеющих собственное меню, таких как edit box).
  • Не будем забывать о клавиатуре. Стандартной комбинацией для вызова контекстного меню является Shift+F10. Когда пользователь нажимает эти клавиши, окно получает WM_CONTEXTMENU (в этом случае координаты курсора устанавливаются равными -1). Благодаря этому вам не придётся отслеживать отдельно вызов контекстного меню с помощью мыши и с помощью клавиатуры.

Вот полный пример обработчика WM_CONTEXTMENU .

case WM_CONTEXTMENU: < // Извлекаем координаты курсора мыши из lParam POINT pt; pt.x = GET_X_LPARAM(lParam); pt.y = GET_Y_LPARAM(lParam); if(pt.x == -1 pt.y == -1) < // Вызов с клавиатуры RECT rect; GetWindowRect(hWnd, // Выводим меню радом с левым верхним углом окна pt.x = rect.left + 5; pt.y = rect.top + 5; > // Загружаем меню из ресурсов HMENU hMenu, hPopupMenu; hMenu = LoadMenu(hInstance, MAKEINTRESOURCE(IDR_MENU1)); hPopupMenu = GetSubMenu(hMenu, 0); // Отображаем меню TrackPopupMenu(hPopupMenu, TPM_LEFTALIGN | TPM_RIGHTBUTTON, pt.x, pt.y, 0, hWnd, NULL); // Уничтожаем меню DestroyMenu(hMenu); >

В этом примере для извлечения координат курсора мыши используются макросы GET_X_LPARAM и GET_Y_LPARAM . Эти и многие другие полезные макросы описаны в заголовочном файле windowsx.h .

В MFC можно использовать этот код без изменений или переписать его через класс CMenu .

Автоматическое добавление контекстного меню

Если вы программируете с использованием MFC, у вас есть счастливая возможность переложить работу по созданию контекстного меню на среду Visual C++. Для этого откройте окно Project->Add To Project->Components and Controls , а затем выберите компонент Pop-up Menu из папки Visual C++ Components . Появится ещё одно окно, в котором вам предложат выбрать, к какому окну вы хотите добавить контекстное меню, а также идентификатор ресурса меню. Вводите нужные параметры, жмите ОК, и в выбранный класс добавится готовый обработчик OnContextMenu . Кроме этого, в ресурсы вашего приложения добавится новое меню, и вам останется только подредактировать его.

Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.

Читайте также:
Как из одной программы вызвать другую python

Источник: www.rsdn.org

Как вызвать контекстное меню в Windows

Ни для кого не секрет, как вызвать контекстное меню. Контекстное меню можно вызвать правой кнопкой мыши. Контекстное меню в разных частях системы отличается. Вот так, например, выглядит меню рабочего стола:

как вызвать контекстное меню

Вот так выглядит контекстное меню в проводнике:

как вызвать контекстное меню

Метод, как вызвать контекстное меню объекта, такой же как и открыть контекстное меню в любой части системы (правой кнопкой мыши):

как вызвать контекстное меню

Как видите меню везде разное, формируется это меню из стандартных инструментов, но со временем, например, после установки некоторых программ, меню может дополняться новыми инструментами. В данном случае вы можете видеть инструменты проверки файла на вирусы с помощью антивируса Касперского, так же, в меню файла есть кнопка для открытия файла в блокноте Notepad++.

Что такое контекстное меню в Windows 10

Контекстное меню в Windows 10 – это вспомогательное меню, выплывающее при нажатии на правой кнопки мышки. В разных частях системы это меню может отличаться. Вызывается контекстное меню правой кнопкой мыши.

Например, на рабочем столе, при нажатии на правую кнопку мышки вы увидите одно меню, в папке другое меню, а если нажмете правой кнопкой мышки на каком-нибудь файле, то перед вами предстанет третий вид меню контекстного меню в Windows.

По умолчанию в этом меню пользователю предлагаются инструменты для более гибкой и удобной работы с системой, например:

  • Можно открыть программу с помощью прав администратора
  • Удалить файл
  • Создать папку и т.д

Как редактировать контекстное меню Windows

Как редактировать контекстное меню Windows:

  1. Установите и запустите Context Menu Tuner (редактор контекстного меню)
  2. Найдите в левой колонке нужную кнопку
  3. Выделите элемент
  4. Выделите меню “Рабочий стол”
  5. Нажмите на кнопку “Добавить”
  6. “Добавить к выделенному элементу”

редактировать контекстное меню

Эта кнопка станет дочерним элементом рабочего стола:

редактировать контекстное меню

Теперь нажмите на рабочем столе правой кнопкой мышки и проверим.

редактировать контекстное меню

Появился новый пункт в контекстном меню.

Редактирование контекстного меню Windows с пунктом, которого нет в списке программы (для примера, добавим пункт “Открыть с помощью Scalc”):

  1. Если нам, чтобы этот пункт отображался не на всех файлах, а только на определённых, нажмите кнопку “Добавить” — “Добавить к указанному типу файлов”
  2. Найдите в поиске xls и установите галочки на тех форматах, на которых хотите видеть дополнительный пункт менюредактировать контекстное меню
  3. Нажмите “ОК”
  4. Выберите тип файла. В колонке инструментов нажмите на “Добавить свой пункт” и заполните все поля и нажмите “Создать”редактировать контекстное меню

Точно также сделайте и для второго формата, в результате у вас должна получиться похожая картина:

редактировать контекстное меню

Теперь нужно проверить. Нажмите правой кнопкой мышки на любом файле отличном от указанных выше:

редактировать контекстное меню

Нового пункта нет, отлично! А теперь нажмите правой кнопкой мышки на таблице с форматом xls.

редактировать контекстное меню

Как добавить в контекстное меню новые пункты

Средствами Windows добавить пункт в контекстное меню Windows 10 – невозможно. Но программистами Winaero была разработана очень удобная утилита для того, чтобы добавить в контекстное меню команды и даже добавить программу в контекстное меню. Её название Context Menu Tuner. Скачать можно с официального сайта. C помощью неё очень просто изменить контекстное меню в Windows.

После скачивания вам нужно распаковать архив и сохранить папку x86 или х64 (в зависимости от разрядности вашей системы).

Как добавить в контекстное меню новые пункты

Определившись с нужной папкой, запускайте в ней файл ContextMenuTuner.exe.

Для смены языка на русский, нажмите на Settings и выберите родной язык.

Как добавить в контекстное меню новые пункты

Перезапустите программу. Как видите, программа очень проста и представляет из себя набор инструментов, с помощью которых можно:

  • Добавить Word в контекстное меню
  • Добавить в контекстное меню папку (проводник) и другое

Источник: delpc.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru