C Windows API: полигон принимает ввод с помощью мыши - PullRequest
0 голосов
/ 29 сентября 2011

Скажем, я создаю многоугольник с функцией Polygon, и я хотел бы, чтобы он принимал ввод от мыши (аналогично кнопке).

Как бы я это сделал?

РЕДАКТИРОВАТЬ:
Обрабатывая сообщения WM_LBUTTONDOWN и WM_MOUSEMOVE, я использую этот код, чтобы проверить, находится ли мышь в области многоугольника:

if (LOWORD(lParam) < 375 && LOWORD(lParam) > 340 &&
    HIWORD(lParam) < 200 && HIWORD(lParam) > 90)

Проблема в том, что многоугольник - это не прямоугольник, а многоугольник.Итак, как мне определить, находится ли мышь только в многоугольнике?

РЕДАКТИРОВАТЬ 2: Я также должен отметить, что это только треугольник.Надеюсь, что это делает это проще.

Ответы [ 2 ]

0 голосов
/ 29 сентября 2011

Полигон не может принять ввод, это должно быть сделано через окно, на котором нарисован многоугольник. Прослушайте сообщение WM_LBUTTONDOWN и посмотрите координаты, поставленные с сообщением; определить, находится ли координата внутри многоугольника или нет. Самый простой способ сделать это - нарисовать многоугольник на растровом изображении того же размера, что и окно, и проверить точку на растровом изображении, чтобы определить, является ли это цветом многоугольника или нет.

0 голосов
/ 29 сентября 2011

Polygon() - это функция, которая используется для рисования в контексте устройства.Как таковой он не может получить inupt.Для этого вам нужен оконный элемент управления.

Обработайте ввод в вашем окне и используйте тест на попадание, чтобы проверить, находитесь ли вы внутри многоугольника.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...