Ome*_*mer 5 c++ windows graphics gdi
我有一个透明窗口(使用WS_EX_LAYERED创建),我想接收零alpha区域的鼠标事件. 据我所知,我可以:
1)使用鼠标钩 2)用几乎完全透明的颜色(不透明度为1)绘制背景
然而,第一个解决方案是耗时的,第二个解决方案将减慢我的渲染时间,因为我的窗口几乎遍布桌面,大多数像素目前都是完全透明的.
是否有其他方式接收这些鼠标事件?
Fer*_*eak 1
根据 MSDN:
分层窗口的命中测试基于窗口的形状和透明度。这意味着窗口中带有颜色键控或 alpha 值为零的区域将允许鼠标消息通过。但是,如果分层窗口具有 WS_EX_TRANSPARENT 扩展窗口样式,则分层窗口的形状将被忽略,并且鼠标事件将传递到分层窗口下方的其他窗口。
然而,在一个新线程中,您可以连续获取鼠标的坐标GetCursorPos,如果该位置位于您的图标之一内(无论如何,它位于图标内的零 alpha 像素之上),您可以处理它。比钩子好不了多少
GetCursorPos
归档时间:
14 年,5 月 前
查看次数:
1641 次
最近记录:
11 年,1 月 前