我觉得我可以加入历史博物馆了,加入微软历史博物馆,本文也是和大家吹历史的博客
简单说这个 WS_EX_NOREDIRECTIONBITMAP 样式是 Win8 提供的,用来做画面图层混合的功能。什么是画面图层混合功能?详细请看为何使用 DirectComposition
玩法就是系统给你一个绘制表面,你在这个绘制表面上进行绘制,然后 DWM (桌面管理器 DWM Desktop Window Manager) 会拿出你绘制的表面来和其他的应用进行混合
用这个方法和传统的区别是啥?普通的应用是给每个窗口的客户区创建一个重定向表面,这个应用的窗口的所有绘制内容都绘制到这个表面。而通过 DirectComposition 可以让应用自己管理和创建这个重定向表面,而让桌面管理器从应用自己创建的表面进行获取 Bitmap 和其他表面进行混合
这个方式有什么作用?主要作用就是提升性能,将 DX 配合上 DirectComposition 是最无敌的性能
那么什么的软件会用到这个功能?用到这个功能最多的是 UWP 应用,但是经过考古在 Win8 的全屏应用也用到这个技术,在 win32 函数里面的 CreateWindowEx 方法创建窗口的时候,可以通过传入 WS_EX_NOREDIRECTIONBITMAP 参数,这个参数需要传入到扩展样式里面,根据文档说的,添加这个样式之后的应用窗口不呈现到重定向表面。这适用于没有可见内容的窗口,或者使用表面以外的机制来提供其视觉效果的窗口。详细文档请看