Здравствуйт!
Как работать с контекстным меню любого контрола мне понятно. Вопрос в том, можно ли вызвать это меню в момент события Mouse Up (левой клавиши мышки).
При нажатии на правую кнопку мышки и перемещении курсора вправо, я выделяю область на графике, далее должно появляться контекстное меню (когда я отпускаю левую кнопку мышки) с вариантами действий с выделенной областью графика.
Вызов контекстного меню при Mouse Up
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Вызов контекстного меню при Mouse Up
В вашем случае проще всего сделать вот так (только событие будет "Mouse Down?", т.к. нужен именно firing event). У этого метода есть минус: контекстное меню выскакивает при нажатии ЛКМ на любом элементе (кнопка, например) и надо это фильтровать. Способ сложнее: создать отдельное окно (ещё один или через WinAPI) и вызывать его при нажатии ЛКМ.
Хотя, нет, не все так сложно... Посмотрите пример отсюда.
Хотя, нет, не все так сложно... Посмотрите пример отсюда.
-
- VIP
- Сообщения: 1338
- Зарегистрирован: 03 фев 2010, 00:42
- Награды: 6
- Версия LabVIEW: 6.1 - 2024
- Откуда: Германия
- Благодарил (а): 1 раз
- Поблагодарили: 44 раза
- Контактная информация:
Re: Вызов контекстного меню при Mouse Up
На самом деле не всё так просто, ибо автору надо получить контекстное меню не при нажатии кнопки, а при отпускании. LabVIEW выкатывает это меню именно при нажатии (что легко заблокировать или переназначить на левую кнопку), однако нет возможности вызвать это меню программно, и нет возможности сгенерировать из отпускания левой кнопки нажатие правой.dadreamer писал(а): Хотя, нет, не все так сложно... Посмотрите пример отсюда.
Эта задачка легко решается вызовом mouse_event из user32.dll, а вот обойтись нативными LabVIEW компонентами, боюсь не получится.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Вызов контекстного меню при Mouse Up
AndreyDmitriev
Так оно, да, даже в официальных примерах касательно событий мыши используются средства ОС: http://digital.ni.com/public.nsf/allkb/ ... 60000E272C
Так оно, да, даже в официальных примерах касательно событий мыши используются средства ОС: http://digital.ni.com/public.nsf/allkb/ ... 60000E272C
-
- interested
- Сообщения: 4
- Зарегистрирован: 23 дек 2011, 15:22
- Версия LabVIEW: 2009
- Контактная информация:
Re: Вызов контекстного меню при Mouse Up
Да, друзья, спасибо, думаю здесь больше всего подойдет использование USER32.dll. Так как штатно в LV это не предусмотрено. Вообще возможность использования API Windows предоставляет большие возможности для воображения и реализации разных вещей в LV. Вот только вызов DLL из LV не будит ли тормозить приложение, насколько быстро LV работает со сторонними библиотеками?
А пока попробую реализовать..
А пока попробую реализовать..
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Вызов контекстного меню при Mouse Up
CapeVerde
Достаточно быстро, во всяком случае, не медленнее, чем в других средах программирования. Особенно, если выставить Error Checking на Disabled. Но в таком случае нужно быть уверенным, что передаваемые параметры верны на 100%, установлено правильное соглашение о вызовах и сама функция способна обработать ошибки внутри себя. В противном случае просто вылетит даже без эксепшна. Вообще, почитайте статьи на http://labview-rus.blogspot.ru/ , узнаете много интересного.
Достаточно быстро, во всяком случае, не медленнее, чем в других средах программирования. Особенно, если выставить Error Checking на Disabled. Но в таком случае нужно быть уверенным, что передаваемые параметры верны на 100%, установлено правильное соглашение о вызовах и сама функция способна обработать ошибки внутри себя. В противном случае просто вылетит даже без эксепшна. Вообще, почитайте статьи на http://labview-rus.blogspot.ru/ , узнаете много интересного.
-
- interested
- Сообщения: 4
- Зарегистрирован: 23 дек 2011, 15:22
- Версия LabVIEW: 2009
- Контактная информация:
Re: Вызов контекстного меню при Mouse Up
За блог про dll спасибо, интересный материал.
Контекстное меню дейсвительно вызывается через mouse_event с параметром 8. Также нужно не забывать отжать правую клавишу той же командой с параметром 10.
Интересно так же заметил, что при перемещении курсора мышки средствами WinAPI, курсор положение не изменяет, хотя дольше отрабатывается клик по ранее установленному значению.
Контекстное меню дейсвительно вызывается через mouse_event с параметром 8. Также нужно не забывать отжать правую клавишу той же командой с параметром 10.
Интересно так же заметил, что при перемещении курсора мышки средствами WinAPI, курсор положение не изменяет, хотя дольше отрабатывается клик по ранее установленному значению.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 23 Ответы
- 4629 Просмотры
-
Последнее сообщение maxim_MA
-
- 6 Ответы
- 1648 Просмотры
-
Последнее сообщение ladik
-
- 38 Ответы
- 13309 Просмотры
-
Последнее сообщение AndreyDmitriev
-
- 2 Ответы
- 272 Просмотры
-
Последнее сообщение Optoelectronics
-
- 4 Ответы
- 1671 Просмотры
-
Последнее сообщение Borjomy_1