C Windows API:多边形接受鼠标输入

C Windows API:多边形接受鼠标输入,c,windows,api,polygon,C,Windows,Api,Polygon,假设我使用polygon函数创建一个多边形,我希望它接受来自鼠标的输入(类似于按钮) 我该怎么做 编辑: 在处理WM_LBUTTONDOWN和WM_MOUSEMOVE消息时,我使用此代码检查鼠标是否位于多边形区域: if (LOWORD(lParam) < 375 && LOWORD(lParam) > 340 && HIWORD(lParam) < 200 && HIWORD(lParam) > 90) if(L

假设我使用
polygon
函数创建一个多边形,我希望它接受来自鼠标的输入(类似于按钮)

我该怎么做

编辑:
在处理
WM_LBUTTONDOWN
WM_MOUSEMOVE
消息时,我使用此代码检查鼠标是否位于多边形区域:

if (LOWORD(lParam) < 375 && LOWORD(lParam) > 340 &&
    HIWORD(lParam) < 200 && HIWORD(lParam) > 90)
if(LOWORD(lParam)<375&&LOWORD(lParam)>340&&
HIWORD(lParam)<200&&HIWORD(lParam)>90)
问题是,多边形不是矩形,而是多边形。那么我该如何检测鼠标是否只在多边形中呢

编辑2:我还应该注意,它只是一个三角形lol。希望这能让这更简单

是一个用于绘制设备上下文的函数。因此,它不能接收inupt。要做到这一点,您需要一个窗口控件


在窗口中处理输入,并使用命中测试检查您是否在多边形内部。

多边形不能接受输入,必须通过绘制多边形的窗口完成。倾听WM_LBUTTONDOWN消息,并查看消息传递的坐标;确定坐标是否在多边形内。最简单的方法可能是在与窗口大小相同的位图上绘制多边形,然后测试位图上的点是否为多边形颜色。

@DavidHeffernan是的,它只有3个点。这通常被称为三角形!;-)这很容易做一个命中测试。我打赌其中一条边是水平的或垂直的。这里介绍了完全通用的多边形测试:这在带有GraphicsPath::IsVisible()函数的Windows中得到了很好的介绍。这是一个C++方法,在C中得到幻想并不是很好的支持。一种方法是从多边形创建路径,将路径转换为一个区域,然后使用pTiNeal.@雷蒙德,但是可能是三角形的过多!!