我正在使用需要创建各种自定义窗口类型的 Win32 应用程序。特别是,这些窗口通常是非矩形的,有阴影,或者大部分是透明的。
我目前正在使用WS_EX_LAYERED
withUpdateLayeredWindow
创建透明窗口,然后可以在其上绘制任意图形。但是,我发现分层窗口受到限制,因为您不能有分层的子窗口,分层窗口也不能正确承载“普通”Win32 控件。
我们的代码库已有数年历史,主要使用 Win32 和 GDI,但我们正在对事物进行现代化改造,是时候研究更新的技术了。
我考虑过在 WPF 中进行自定义窗口化,但我担心我所读到的有关“空域”问题的内容。似乎 WPF 使用分层窗口来完成其每像素 alpha 混合,因此它似乎也会受到我以前经历过的限制的影响。
我对 Direct2D 知之甚少(真的一无所知),但该技术听起来可能很有趣。虽然,我找不到任何关于它能够做覆盖窗口的参考。
所以,所有这些都让我想到了我的问题:在 Windows 下做覆盖窗口的最佳技术是什么?(Vista 和 Win7 至少,XP 会很高兴)
我是否忽略了一些特别好的技术?任何建议,将不胜感激。