【发布时间】:2011-08-28 07:15:51
【问题描述】:
我有一个透明窗口(使用 WS_EX_LAYERED 创建),我想接收零 alpha 区域的鼠标事件。
据我所知,我可以:
1) 使用鼠标钩
2)用几乎完全透明的颜色(不透明度为1)绘制背景
但是,第一个解决方案很耗时,而第二个解决方案会减慢我的渲染时间,因为我的窗口几乎在整个桌面上都被拉伸了,而且目前大多数像素都是完全透明的。
还有其他方式接收这些鼠标事件吗?
【问题讨论】:
-
您是否始终需要这种通用功能,或者只是在某些时候(例如,当您的窗口是活动窗口时)。如果是后者,你可以捕获鼠标。
-
钩子的另一个问题是你必须非常小心你的窗口在顶部,这样你就不会窃取其他窗口的点击。如果您提供更多有关您想要实现的目标的信息,也许会有所帮助。
-
我会更好地解释它,我正在绘制 PNG 图标并尝试检测鼠标是否悬停在这些项目上。现在大多数图标的 alpha 区域为零,当我将它们悬停时,我没有收到 WM_MOUSEMOVE 事件,因为它们的容器窗口是透明的。