0 / 0 / 0
Регистрация: 11.12.2018
Сообщений: 32
|
||||||
1 | ||||||
Отрисовка круга, следующего за курсором в API win3223.08.2020, 13:58. Показов 2270. Ответов 6
Прошу помощи с редактированием кода, чтобы получить результат, как на гифке.
В исходнике по нажатии на Enter красный эллипс начинает двигаться по окружности, и останавливается по нажатии на Space. Исходный код (Писался в Watcom IDE, современная версия VS у меня ругается на несколько операций с переменными и не хочет компилироваться): Кликните здесь для просмотра всего текста
Нужно, чтобы при запуске окна, эллипс перемещался за курсором, но не выходил за определенные кругом границы. Я был бы очень благодарен за предоставление рабочего кода, или кода похожей программы, с которой я бы мог разобраться и надергать оттуда функции. P.S. Нужно для универа, я благополучно пропустил весь курс API и сейчас пытаюсь исправиться, но времени осталось мало) Помогите х)
0
|
23.08.2020, 13:58 | |
Ответы с готовыми решениями:
6
Почему Microsoft больше не публикует книги по Win32 API? В частности, разработка графического интерфейса с Win32 Отрисовка линии за курсором мышки Отрисовка круга в консоли по данным Перемещение круга в установленную курсором мыши точку |
0 / 0 / 0
Регистрация: 11.12.2018
Сообщений: 32
|
||||||
23.08.2020, 15:14 [ТС] | 2 | |||||
У меня есть некоторый прогресс, может вдруг кто-то поможет хотя бы с этим.
Кликните здесь для просмотра всего текста
Гифка с результатом: Пока что с ограничениями я не разбирался, но круг следует за курсором. Но останавливается, когда курсор находит на сам круг. Я так понимаю, это потому что круг является другим окном, и с него координаты не берутся, но я совсем не знаю как это исправить! А еще, хоть на гифке не видно, но при быстрых движениях курсором в сторону, часть круга "съедается" и дорисовывается только в конечной точке. Я не могу это запечатлеть, потому что даже скриншоты не дают этот момент поймать, но круг действительно обрезается. Что с этим можно сделать?
0
|
6107 / 3461 / 1406
Регистрация: 07.02.2019
Сообщений: 8,794
|
||||||
23.08.2020, 19:35 | 3 | |||||
Сообщение было отмечено DioxiT как решение
Решение
Попробуйте так:
Кликните здесь для просмотра всего текста
1
|
0 / 0 / 0
Регистрация: 11.12.2018
Сообщений: 32
|
||||||
23.08.2020, 21:02 [ТС] | 4 | |||||
Прошу прощения, но у меня не получается запустить ваш код, если я его, конечно, правильно собрал. Компилятор ругается:
circle.cpp(72): Error! E121: col(23) syntax error circle.cpp(77): Error! E029: col(48) symbol 'DC_BRUSH' has not been declared circle.cpp(78): Error! E029: col(48) symbol 'DC_PEN' has not been declared circle.cpp(101): Error! E029: col(26) symbol 'SetDCPenColor' has not been declared circle.cpp(102): Error! E029: col(13) symbol 'SetDCBrushColor' has not been declared Я должен был как-то заранее определить DC_BRUS и DC_PEN? Очень прошу помочь! Кликните здесь для просмотра всего текста
0
|
6107 / 3461 / 1406
Регистрация: 07.02.2019
Сообщений: 8,794
|
|
23.08.2020, 21:32 | 5 |
Нет, они должны быть определены в Wingdi.h, правда должна быть Windows 2000 и старше.
Если нету, создайте сами две кисти Brush(белую и красную) и две ручки Pen(чёрную и белую) и выбирайте их вместо SetDCPrushColor и SetDcPenColor
0
|
0 / 0 / 0
Регистрация: 11.12.2018
Сообщений: 32
|
||||||
23.08.2020, 23:15 [ТС] | 6 | |||||
Добавил перед икнлюдами #define _WIN32_WINNT 0x500 и осталась только одна ошибка. Синтаксическая в 72 строке:
rectWin = { centerX - halfSize, centerY - halfSize, centerX + halfSize, centerY + halfSize }; В чем может быть проблема? Для структуры синтаксис правильный, кажется, тем более в глобальных выше rectBM инициализировался так же. Я думал с типами данных какие-то проблемы, но разве не должна быть для этого отдельная ошибка? Добавлено через 32 минуты В чем ошибка я так и не понял, но если записать так, то работает:
0
|
6107 / 3461 / 1406
Регистрация: 07.02.2019
Сообщений: 8,794
|
|
23.08.2020, 23:17 | 7 |
Попробуй перед первой фигурной скобкой добавить идентификатор типа(т.е.
rectWin = RECT{...}; )Если не поможет, вручную присвой поля(т.е. rectWin.left = centerX - halfSize; и т.д.)
1
|
23.08.2020, 23:17 | |
23.08.2020, 23:17 | |
Помогаю со студенческими работами здесь
7
Нарисовать 5 кругов со смещением центра каждого следующего круга Qt + Win32 API С++ Win32 API Win32 API Библиотека по Win32 API ComboBox Win32 API Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |