|
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
|
||||||||||||||||
Написать программу, которая по левому щелчку мыши выводила бы координаты курсора12.07.2011, 19:34. Показов 10257. Ответов 31
Метки нет (Все метки)
Всем доброго времени суток.
Win32 начал только изучать. Для практики, решил написать программу, которая по левому щелчку мыши выводила бы координаты курсора. Вроде как сделал, но выглядит как велосипед. Просто я к этому долго приходил, было много заморочек с типами. Вы как считаете, это нормально ?)
И вот еще, вопрос. Как я понял, он выдает мне экранные координаты, то есть отсчет идет от левого верхнего угла монитора. Как получать координаты относительно клиентской области? Спасибо. Добавлено через 9 минут Попытался так -
Добавлено через 58 минут Ураа, нашел решение с помощью функции ScreenToClient, которая как раз приводит экранные координаты к координатам клиентской области.
0
|
||||||||||||||||
| 12.07.2011, 19:34 | |
|
Ответы с готовыми решениями:
31
Написать программу, которая будет рисовать на форме звезду по щелчку мыши Написать программу которая будит выводить координаты мыши По левому шелчку мыши нарисовать олимпийский флаг, а по правому щелчку - красный шар |
|
342 / 306 / 36
Регистрация: 16.06.2009
Сообщений: 486
|
|
| 12.07.2011, 20:39 | |
|
1
|
|
|
71 / 76 / 9
Регистрация: 30.06.2011
Сообщений: 176
|
||||||
| 12.07.2011, 21:53 | ||||||
|
Они же в LPARAM приходят эти координаты:
1
|
||||||
|
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
|
|||||||||||
| 13.07.2011, 20:43 [ТС] | |||||||||||
|
Не знал, спасибо
![]() Добавлено через 22 часа 36 минут Всем привет. Возникла проблема с моим следующим экспериментом. По щелчку мышу он должен рисовать эллипс.
Добавлено через 7 минут Вот так рисует, но только один раз, то есть на первый щелчок реагирует, а на последующие уже нет.
0
|
|||||||||||
|
342 / 306 / 36
Регистрация: 16.06.2009
Сообщений: 486
|
|||||||||||
| 13.07.2011, 20:46 | |||||||||||
|
neske,
попробуйте в
1
|
|||||||||||
|
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
|
|
| 13.07.2011, 20:50 [ТС] | |
|
nameless, я не понимаю логически, почему мой код не работает.
Рассуждал так. Я нажимаю на мышь, генерируется WM_LBUTTONDOWN. Оттуда мы вызываем WM_PAINT, куда передаем все параметры. Мы изымаем координаты мыши, как мне посоветовали раньше, и рисуем эллипс. Где я ошибся? Посмотрел в справке, что в WM_PAINT параметр lParam не используется, то есть равен нулю, я подумал) я сделал в проверку, в if у меня заходит всегда, но не рисует.
0
|
|
|
342 / 306 / 36
Регистрация: 16.06.2009
Сообщений: 486
|
|
| 13.07.2011, 21:00 | |
|
neske, отправка сообщения SendMessage(hWnd, WM_PAINT, wParam, lParam) не перерисовывает окно. Посылка сообщения WM_PAINT это только сигнал окну, что у него есть область, которую надо перерисовать, используйте InvalidateRect(), которая пометит окно как невалидное, и система сама пошлет WM_PAINT когда нужно. Также можно использовать RedrawWindow(), которая вызывает перерисовку немедленно, но это визуально выглядит не очень хорошо, скажем так.
1
|
|
|
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
|
|
| 13.07.2011, 21:03 [ТС] | |
|
А, понял, спасибо.
Если я буду использовать InvalidateRect, то как мне передать параметры из WM_LBUTTONDOWN в WM_PAINT? Вытаскивать координаты прям из WM_PAINT не вариант, т.к. я хочу конкретно по щелчку мыши.
0
|
|
|
342 / 306 / 36
Регистрация: 16.06.2009
Сообщений: 486
|
|
| 13.07.2011, 21:06 | |
|
neske, Заведите глобальную static переменную POINT pt, по щелчку GetCursorPos(&pt); Как у вас в первом посте описано было..
1
|
|
|
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
|
|
| 13.07.2011, 21:10 [ТС] | |
|
Да, действительно =)
А тогда, как мне в WM_PAINT определить, рисовать эллипс или нет? Ведь опять же, только по щелчку мыши. Вы извините за такое кол-во вопросов, просто это первый опыт)
0
|
|
|
342 / 306 / 36
Регистрация: 16.06.2009
Сообщений: 486
|
||
| 13.07.2011, 21:13 | ||
|
0
|
||
|
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
|
|
| 13.07.2011, 21:14 [ТС] | |
|
Ну вот, при создании окна, к примеру, тоже вызывается WM_PAINT, но рисовать не нужно.
0
|
|
|
342 / 306 / 36
Регистрация: 16.06.2009
Сообщений: 486
|
|
| 13.07.2011, 21:19 | |
|
neske, задайте флажок какой-нибудь state = FALSE;
В WM_PAINT проверяйте если state == TRUE -> рисуем; При нажатии на кнопку state = TRUE; Так вполне сносно
1
|
|
|
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
|
||||||
| 13.07.2011, 21:34 [ТС] | ||||||
|
Вроде бы все сделал как вы сказали, но не рисует. Что не так?)
Тут такие ужасные здоровые отступы, но это все форум)
0
|
||||||
|
342 / 306 / 36
Регистрация: 16.06.2009
Сообщений: 486
|
|
| 13.07.2011, 21:36 | |
|
0
|
|
|
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
|
|
| 13.07.2011, 21:42 [ТС] | |
|
Да я исправил уже. Я пробовал и так, и UpdateWindow. В обоих вариантах он не рисовал.
0
|
|
|
|
|
| 13.07.2011, 21:51 | |
|
рисоваться будут те объекты которые "живы" в динамической памяти. у них у каждого должна быть процедура отрисовки себя самого. и по WM_PAINT процедура перерисовки будет вызваться для каждого объекта и тогда для нас они будут нарисованы на экране. Объекты можно хранить в списке. По крайней мере так было в моем случае. вот рисовалка вымученная с экспериментами по апи
елси curve нарисовать лицо а потом нажать shoot интересно получается. наглядно видно из чего состоит изображение. чорт в первом вложении дебуг положилDesktop.rar. во втором релиз. win2.rar лоад загружает из текстового файла рисунок, а сэйв сохраняет в OU.txt
1
|
|
|
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
|
|
| 13.07.2011, 21:55 [ТС] | |
|
AzaKendler, скачал, но у меня на кнопки не нажать в программе. оО
0
|
|
|
|
|
| 13.07.2011, 21:57 | |
|
neske, ну..выбор фигуры я делал подсветку а вот выбор цвета ширины линии уже нет. надоело. но оно выбирается. поюзай.
когда нажат shoot незя рисовать. щут надо отжать. там просто изначально был выстрел - летела пуля круглая по дугообразной траектории и при попадании в нарисованый объект уничтожала его. наигравшись с этим захотелось сделать другое движение по экрану. а переделывть менюшку было лень
1
|
|
|
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
|
|
| 13.07.2011, 22:00 [ТС] | |
|
AzaKendler, да, все работает, прошу прощения.
попробую, спасибо.
0
|
|
| 13.07.2011, 22:00 | |
|
Помогаю со студенческими работами здесь
20
Создайте программу, которая по правому щелчку мыши заполняет массив Написать программу, которая выводила бы на экран картинку Написать программу, которая выводила бы 2 колонки с цифрами Написать программу, которая выводила бы в графическое окно набор графиков Написать программу, которая в зависимости от введённого числа выводила бы на экран: Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|