如何在屏幕上绘制内容并使底层ui具有交互性

时间:2010-01-05 08:49:50

标签: c++ windows winapi

我首先寻求Windows的解决方案。 我需要在屏幕图像上添加视觉效果,而不会破坏此屏幕上所有控件的交互性。 解决方案可以很简单:  1.截取屏幕截图  2.在其他窗口上方的单独窗口中显示此屏幕截图  3.将效果应用于图像,显示在此窗口中 但是,这个窗口(包含屏幕截图)使下面的任何按钮和其他控件无法访问鼠标(点击,悬停)

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

来自MSDN关于layered windows的文档......

“分层窗口的命中测试基于窗口的形状和透明度。这意味着窗口中的颜色键或其alpha值为零的区域将允许鼠标消息通过。但是,如果分层窗口具有WS_EX_TRANSPARENT扩展窗口样式,则将忽略分层窗口的形状,并将鼠标事件传递到分层窗口下的其他窗口。“

这是an article about it。请注意这个附加警告:

“设置WS_EX_TRANSPARENT属性会影响整个窗口:用户无法使用”x“按钮关闭窗口,使用鼠标选择它,或者选择窗口上的任何控件。应用程序仍然可以关闭以编程方式显示窗口。“

根据您实际绘制的内容和位置,使用Owner-Drawn Controls而不是在整个窗口上悬停“洋葱皮”可能更合适。