C 有关于形状的活动吗?

C 有关于形状的活动吗?,c,winapi,tdm-gcc,C,Winapi,Tdm Gcc,我有一个画在窗户上的椭圆。我想在指针位于(椭圆上)时显示一条消息。我怎么做?有关于形状的活动吗?如WM\u MOVE或WM\u SIZE 我使用TDM-GCC和C语言。当您在设备上下文上绘制时,您绘制的形状的所有知识都会丢失,系统只保留该设备上下文的逐像素信息。因此,系统无法向您提供有关所绘制形状的任何信息,因为它对这些形状一无所知 为了做你想做的事情,你需要在你的程序中跟踪形状所在的高级逻辑。然后,当处理鼠标消息时,可以将它们映射到表示形状的自己的数据结构上。图形上没有鼠标活动的事件。您需要记

我有一个画在窗户上的椭圆。我想在指针位于(椭圆上)时显示一条消息。我怎么做?有关于形状的活动吗?如
WM\u MOVE
WM\u SIZE


我使用
TDM-GCC
C
语言。

当您在设备上下文上绘制时,您绘制的形状的所有知识都会丢失,系统只保留该设备上下文的逐像素信息。因此,系统无法向您提供有关所绘制形状的任何信息,因为它对这些形状一无所知


为了做你想做的事情,你需要在你的程序中跟踪形状所在的高级逻辑。然后,当处理鼠标消息时,可以将它们映射到表示形状的自己的数据结构上。

图形上没有鼠标活动的事件。您需要记住绘制的位置,然后自己将鼠标坐标映射到绘制坐标。要对此有所帮助,请查看函数。通过或创建一个与图形匹配的椭圆
HRGN
(事实上,您可以使用相同的
HRGN
来帮助绘制,请参见函数),当您想要测试鼠标当前是否在图形中,例如在处理程序中时,可以使用
optinregion()

如果形状的所有知识都将丢失,那么我们如何在显示后调整它们的大小?系统是否为调整大小而重新绘制它们?@RomanP否,您的程序为调整大小而重新绘制它们。如果没有,则在调整窗口大小时,它们可能会消失。每当需要重新绘制窗口时,您都需要重新绘制形状。例如,在
WM_PAINT
处理程序中绘制。当一个窗口被调整大小时,它也可以被重新绘制。还有一个问题需要解决:当鼠标完全离开窗口时获得通知。允许您这样做。为实现提供了有用的建议。@IInspectable我看不出这与此问题有什么关系,但可以。“我想在指针位于消息上(椭圆上)时显示消息”。这难道不意味着,一旦鼠标指针离开形状,你就想让任何信息消失吗?将形状留在窗口内和离开窗口本身是两件不同的事情。有时是这样,有时是这样。我的评论是为了解决这种情况,它们是一致的。Win32绘制和输入是在窗口级别完成的。该计划有责任了解其窗口内发生的情况。您可能需要考虑提供像对象模型那样的高级功能的框架。