Вызов контекстного меню при Mouse Up

Обсуждение вопросов, связанных со средами разработки и проектирования
Ответить
CapeVerde
interested
interested
Сообщения: 4
Зарегистрирован: 23 дек 2011, 15:22
Версия LabVIEW: 2009
Контактная информация:

Вызов контекстного меню при Mouse Up

Сообщение CapeVerde »

Здравствуйт!

Как работать с контекстным меню любого контрола мне понятно. Вопрос в том, можно ли вызвать это меню в момент события Mouse Up (левой клавиши мышки).
При нажатии на правую кнопку мышки и перемещении курсора вправо, я выделяю область на графике, далее должно появляться контекстное меню (когда я отпускаю левую кнопку мышки) с вариантами действий с выделенной областью графика.
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Вызов контекстного меню при Mouse Up

Сообщение dadreamer »

В вашем случае проще всего сделать вот так (только событие будет "Mouse Down?", т.к. нужен именно firing event). У этого метода есть минус: контекстное меню выскакивает при нажатии ЛКМ на любом элементе (кнопка, например) и надо это фильтровать. Способ сложнее: создать отдельное окно (ещё один :vi: или через WinAPI) и вызывать его при нажатии ЛКМ.

Хотя, нет, не все так сложно... Посмотрите пример отсюда.
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1327
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 38 раз
Контактная информация:

Re: Вызов контекстного меню при Mouse Up

Сообщение AndreyDmitriev »

dadreamer писал(а): Хотя, нет, не все так сложно... Посмотрите пример отсюда.
На самом деле не всё так просто, ибо автору надо получить контекстное меню не при нажатии кнопки, а при отпускании. LabVIEW выкатывает это меню именно при нажатии (что легко заблокировать или переназначить на левую кнопку), однако нет возможности вызвать это меню программно, и нет возможности сгенерировать из отпускания левой кнопки нажатие правой.

Эта задачка легко решается вызовом mouse_event из user32.dll, а вот обойтись нативными LabVIEW компонентами, боюсь не получится.
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Вызов контекстного меню при Mouse Up

Сообщение dadreamer »

AndreyDmitriev
Так оно, да, даже в официальных примерах касательно событий мыши используются средства ОС: http://digital.ni.com/public.nsf/allkb/ ... 60000E272C
CapeVerde
interested
interested
Сообщения: 4
Зарегистрирован: 23 дек 2011, 15:22
Версия LabVIEW: 2009
Контактная информация:

Re: Вызов контекстного меню при Mouse Up

Сообщение CapeVerde »

Да, друзья, спасибо, думаю здесь больше всего подойдет использование USER32.dll. Так как штатно в LV это не предусмотрено. Вообще возможность использования API Windows предоставляет большие возможности для воображения и реализации разных вещей в LV. Вот только вызов DLL из LV не будит ли тормозить приложение, насколько быстро LV работает со сторонними библиотеками?


А пока попробую реализовать..
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Вызов контекстного меню при Mouse Up

Сообщение dadreamer »

CapeVerde
Достаточно быстро, во всяком случае, не медленнее, чем в других средах программирования. Особенно, если выставить Error Checking на Disabled. Но в таком случае нужно быть уверенным, что передаваемые параметры верны на 100%, установлено правильное соглашение о вызовах и сама функция способна обработать ошибки внутри себя. В противном случае :labview: просто вылетит даже без эксепшна. Вообще, почитайте статьи на http://labview-rus.blogspot.ru/ , узнаете много интересного.
CapeVerde
interested
interested
Сообщения: 4
Зарегистрирован: 23 дек 2011, 15:22
Версия LabVIEW: 2009
Контактная информация:

Re: Вызов контекстного меню при Mouse Up

Сообщение CapeVerde »

За блог про dll спасибо, интересный материал.
Контекстное меню дейсвительно вызывается через mouse_event с параметром 8. Также нужно не забывать отжать правую клавишу той же командой с параметром 10.
Интересно так же заметил, что при перемещении курсора мышки средствами WinAPI, курсор :labview: положение не изменяет, хотя дольше отрабатывается клик по ранее установленному значению.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Среды разработки»