Есть ли событие для фигур? - PullRequest
0 голосов
/ 15 января 2020

У меня есть эллипс , который нарисован на окне. Я хочу показать сообщение , когда на нем есть указатель (на эллипсе) . Как мне это сделать? Есть ли какое-нибудь событие для фигур? Как WM_MOVE или WM_SIZE.

Я использую TDM-GCC и C язык.

Ответы [ 2 ]

3 голосов
/ 15 января 2020

Когда вы рисуете в контексте устройства, все знания о том, какую фигуру вы рисуете, теряются, и система просто сохраняет попиксельную информацию этого контекста устройства. Таким образом, система не может предоставить вам какую-либо информацию о фигурах, которые вы рисуете, потому что она ничего не знает об этих фигурах.

Чтобы сделать то, что вы хотите, вам нужно отслеживать в своей программе логи высокого уровня c того, где находятся ваши фигуры. Затем, когда вы обрабатываете сообщения мыши, вы можете отобразить их на свои собственные структуры данных, которые представляют фигуры.

1 голос
/ 16 января 2020

Нет событий для активности мыши над чертежами. Ожидается, что вы запомните, где вы рисуете, а затем сопоставите координаты мыши с координатами чертежа самостоятельно. Чтобы помочь с этим, взгляните на функцию PtInRegion(). Создайте эллиптический HRGN с помощью CreateEllipticRgn() или CreateEllipticRgnIndirect(), который соответствует вашему чертежу (на самом деле, вы можете использовать тот же HRGN, чтобы облегчить рисование, см. FillRgn()), и когда вы хотите проверить, находится ли мышь в данный момент внутри чертежа, например, в обработчике WM_MOUSEMOVE, вы можете использовать для этого PtInRegion() .

...