|
1 / 1 / 1
Регистрация: 13.08.2015
Сообщений: 45
|
||||||
Как при нажатии мыши по элементу начать выполнять действие?08.09.2015, 23:06. Показов 2801. Ответов 12
Метки нет (Все метки)
Добрый вечер, товарищи
![]() Изучаю windows form, решил соединить с OpenGL, пока все получается (нужно что бы в окне отрисовывалось 2D изображение, простые квадратики, маленький вопрос, возможно ли это можно сделать без участия OpenGL?). Для соединения создал элемент - окно для OpenGL внутри WindowsForm таким образом:
Так вот когда я нажимаю на рабочее окно WF, он реагирует на события мыши, а когда нажимаю на место отрисовки OGL на мышь не реагирует. Я так понял он этого не делает потому что у меня событие мыши обрабатываются только при нажатии на фон окна, а на нажатии на элемент я этого не сделал. Вопрос: как это сделать? Для фона я просто влазил в свойства формы -> события -> mouseDown, а что делать для этого элемента который был создан не посредствам конструктора?
0
|
||||||
| 08.09.2015, 23:06 | |
|
Ответы с готовыми решениями:
12
Сделать так, чтобы при двойном нажатии левой кнопки мыши по ссылке происходило некое действие Как выполнять действие только при запросе XHR |
|
Администратор
|
||||||||
| 09.09.2015, 07:59 | ||||||||
1
|
||||||||
|
1 / 1 / 1
Регистрация: 13.08.2015
Сообщений: 45
|
||||||
| 09.09.2015, 09:55 [ТС] | ||||||
|
tezaurismosis, Спасибо за ответ
Тогда попробую в ручную, не подскажете, как можно в с++ вывести в переменные глобальные координаты мыши, а так же ее события? (может быть есть какая нибудь литература? а то все обыскал, только по С# информацию находил)Кстати не много более полный код, а то какой то не информативный кусок сперва вставил..
0
|
||||||
|
Администратор
|
|||||||||||||
| 09.09.2015, 10:03 | |||||||||||||
1
|
|||||||||||||
|
1 / 1 / 1
Регистрация: 13.08.2015
Сообщений: 45
|
||||||
| 09.09.2015, 12:15 [ТС] | ||||||
|
tezaurismosis, первый вариант, как я уже в заголовке темы писал у меня работает, но только для в области WF, а в области OpenGL которая была создана посредствам NativeWindow реакции ни какой нет (так же как например при нажатии на button или label т.к. в их свойствах это не указано). Я могу в свойствах задать реакцию и на нажатие на любые элементы, но для NativeWindow сделанного в ручную нет таких свойств, да и в обще в классе нет реакции на мышь. Пробовал наследовать из лейбла в отдельном классе реакцию на мышь, но ни чего не получилось.
А вот код
только вот он показывает позицию мыши, а события мыши в Cursor как я понял нет (https://msdn.microsoft.com/ru-... .110).aspx)Был бы очень благодарен если бы еще подсказали код который реагирует на события мыши
0
|
||||||
|
Администратор
|
|||||||
| 09.09.2015, 13:34 | |||||||
|
К сожалению, такого никогда не делал, поэтому конкретнее вряд ли посоветую. Или можете скинуть проект, я попробую сделать такое. Чтобы проект влез во вложение форума, удалите из папки файл sdf и запакуйте архиватором. Добавлено через 1 час 2 минуты Удалось обработать сообщение от Windows - для этого нужно переопределить WndProc. Ох и помучился я с этим синтаксисом ![]() В коде формы
1
|
|||||||
|
1 / 1 / 1
Регистрация: 13.08.2015
Сообщений: 45
|
|
| 09.09.2015, 15:32 [ТС] | |
|
tezaurismosis, я тоже скоро плакать буду, Ваш код работает в пределах WF, а на OpenGL нет... Подготовил проект, почистил, закомментил, может быть посмотрите?
Может я даже просто не туда Ваш код вставил..
0
|
|
|
Администратор
|
|
| 09.09.2015, 18:06 | |
|
babanty, GLUT не скинете? Никак не могу найти готовые либы с заголовочниками, а компилировать из исходников - долгая песня.
0
|
|
|
1 / 1 / 1
Регистрация: 13.08.2015
Сообщений: 45
|
|
| 09.09.2015, 18:43 [ТС] | |
|
http://www.swiftless.com/tutor... ivers.html
Там описано куда закидывать, все просто, скачать library; include; dll ![]() Добавлено через 2 минуты tezaurismosis, Может и Вам OpenGL понравится
1
|
|
|
Администратор
|
||||||
| 09.09.2015, 19:20 | ||||||
|
babanty, посмотрел, скомпилировал, вовне области рисования OpenGL работает, внутри - нет. Пока не знаю, что и предложить. Может, есть средства для перехвата сообщений в самом OpenGL.
Добавлено через 21 минуту Сейчас мне разбираться в OpenGL нет времени, но вот какая идея - есть функция glutMouseFunc, которая ловит события мыши. Как она именно работает - не разобрался. Есть какая-то особенность в том, куда её помещать и обрабатывать. Вот код, чтобы понять идею, до рабочего состояния не доведён, к сожалению.
0
|
||||||
|
1 / 1 / 1
Регистрация: 13.08.2015
Сообщений: 45
|
|
| 09.09.2015, 22:34 [ТС] | |
|
tezaurismosis, Большое спасибо за помощь
Тему закрою позже, может что придет на ум ![]() По поводу обработчика событий мыши от OpenGL, то это первое что я сделал, они со всем не совместимы. Я вот думаю, есть какой то обработчик не зависимый от windows form и OpenGL. Я им пользовался на языке autoit, на сколько я знаю он сделан на WinApi, попробую на нем... Кстати, я так понял Вы С# знаете? Хотел бы узнать, данную затею может быть на нем было бы проще написать? С++ изучаю всего 2 недели, мне перейти на С# очень легко, я еще ни к чему не привык
0
|
|
|
Администратор
|
|
| 10.09.2015, 09:15 | |
|
babanty, изначально OpenGL написан на Си, соответственно лучшая привязка будет именно на нём.
Однако на C# писать, как по мне, одно удовольствие. К тому же, существуют обёртки OpenGL для C#, например OpenTK. Да и связь Windows Forms и C++ с помощью "расширенного" языка C++/CLI по своей сути - костыль. Дело ваше, но я бы рекомендовал познакомиться с C# и составить своё мнение о языке.
0
|
|
|
1 / 1 / 1
Регистрация: 13.08.2015
Сообщений: 45
|
|
| 15.09.2015, 14:34 [ТС] | |
|
tezaurismosis, нашел решение
Написал программу на С# согласно данным урокам: http://esate.ru/uroki/OpenGL/uroki-OpenGL-c-sharp/
0
|
|
| 15.09.2015, 14:34 | |
|
Помогаю со студенческими работами здесь
13
Как сделать действие при нажатии на кнопку Действие при нажатии на объект. Как сделать?
При нажатии средней кнопки мыши, а также при нажатии на ссылки в браузере Firefox открываются рекламные сайты Выполнять определенное действие при наведении курсора на элемент управления Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
|
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|