“创建类似Flip3D的应用程序”的API是什么?

10
我想知道如何使用DWM在自己期望的位置渲染窗口的副本。 我发现的唯一可以告诉DWM在某个地方进行呈现的内容是缩略图API。 但是MSDN的DWM缩略图概述明确警告我不要这样做: DWM缩略图无法让开发人员创建像Windows Vista Flip3D(WINKEY-TAB)功能那样的应用程序。 缩略图直接以2-D形式呈现到目标窗口。 我被告知,缩略图API不能用于创建类似Flip3D的应用程序,但他们没有说用哪个API能够创建类似于Windows Vista Flip3D的应用程序。 那么,哪个API可以用来创建类似于Windows Vista Flip3D的应用程序?

背景

在运行 Windows 桌面组合时,应用程序将其窗口客户区绘制到自己的私有缓冲区中。(这与之前的 Windows 版本不同,在那些版本中每个应用程序直接在屏幕上绘制)。然后,将此客户区图像放置在一个框架中(标题栏、最小化、最大化、恢复按钮等),然后绘制(即合成)到桌面上 - 与所有其他打开的窗口一起:

alt text

由于该缓冲区是私有的,并且由于近年来的图形卡已经能够高效执行3D任务,因此Windows可以执行一些巧妙的技巧。其中之一就是能够操作客户端窗口,对其进行缩放和透视变换。这允许实时“缩略图”API(Windows将在您告诉它的位置绘制窗口的缩略图大小副本)。由于所有这些都是在硬件中完成的,所以非常快速。
另一个能力是Flip3D(Win+Tab)。合成器可以对窗口执行三维定位。同样,由于所有这些都是在硬件中完成的,因此非常快速。
我已经找到了API,告诉桌面窗口监视器在此处为我绘制应用程序的缩略图。
//Register a thumbnail we want
DwmRegisterThumbnail({in}hwndDestination, {in}hwndSource, out thumbnail);

// Start displaying the thumbnail
DwmUpdateThumbnailProperties({in}thumbnail, {in}thumbproperties);

但我找不到API来告诉DWM为我绘制窗口的全尺寸版本。


编辑你不能指责微软在Windows中的版权保护存档

  • 已发货的许可产品应符合合规规则,并且应设计和制造成一种明显旨在有效阻止修改此类许可产品以打败HDCP规范和合规规则内容保护要求的方式。

  • 许可产品应设计和制造成一种明显旨在有效阻止发现或揭示设备密钥或其他高度机密信息的方式。

  • 许可产品应使用至少以下技术,以一种明显旨在有效阻止打败HDCP规范和合规规则内容保护要求的方式:

你必须责备索尼。


我也在寻找解决方案;不过我怀疑这个问题是否存在,因为它和微软有关。 - AniDev
1
我怀疑是否存在一种解决方案,以满足许可协议(http://en.wikipedia.org/wiki/High-bandwidth_Digital_Content_Protection)所要求的“挫败”微软用户的需求。 - Ian Boyd
3
如果这是HDCP的副作用,那么为什么OS X有CGWindowListCreateImage?我不明白它们有任何关联。也许他们只是不希望人们搞乱窗口系统。无论如何,总有办法。只需要进行一些DWM反向工程即可。 - Jake Petroules
1个回答

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接