I am trying to figure out how to use DWM to render a copy of a Window into my own desired location. The only thing I can find to tell DWM to render somewhere is with the thumbnail APIs.
But MSDN's DWM Thumbnail Overview they specifically warn me off:
Note DWM thumbnails do not enable developers to create applications like the Windows Vista Flip3D (WINKEY-TAB) feature. Thumbnails are rendered directly to the destination window in 2-D.
I am told that the thumbnailing api cannot be used to create applications like Flip3D, but they don't say which api can be used to create applications like the Windows Flip3D.
So what API can be used to create applications like the Windows Vista Flip3D?
With Windows Desktop Composition running, applications draw their window client-area's onto their own private buffer. (This contrasts with previous versions of Windows where every application drew directly on the screen). This client area image is then placed in a frame (the title bar, minimize, maximize, restore buttons, etc) and then drawn (i.e. composited) onto the desktop - along with all the other windows that are open:
Because this buffer is private, and because graphics cards in the last few years have become powerful at performing 3D tasks, Windows can then start to perform some neat tricks. One of them is to be able to manipulate the client window, performing scaling and perspective changes to it. This allows the live "thumbnail" api - where Windows will draw a thumbnail size copy of a window where you tell it to. Since this is all happening in the hardware, it is very fast.
The other ability is the Flip3D (Win+Tab). The compositor can perform 3d positioning of a window. Again, because this is all done in hardware it is very fast.
I have found the API to tell the Desktop Window Monitor to draw me a thumbnail of an application "here":
//Register a thumbnail we want
DwmRegisterThumbnail({in}hwndDestination, {in}hwndSource, out thumbnail);
// Start displaying the thumbnail
DwmUpdateThumbnailProperties({in}thumbnail, {in}thumbproperties);
But I cannot find the API to tell the DWM to draw me the full-size version of a window.
Edit: You can't blame Microsoft for copy protection in Windows: archive
Licensed Products as shipped shall comply with the Compliance Rules and shall be designed and manufactured in a manner that is clearly designed to effectively frustrate attempts to modify such Licensed Products to defeat the content protection requirements of the HDCP Specification and the Compliance Rules.
Licensed Products shall be designed and manufactured in a manner that is clearly intended to effectively frustrate attempts to discover or reveal Device Keys or other Highly Confidential Information
Licensed Products shall use at least the following techniques, in a manner that is clearly designed to effectively frustrate attempts to defeat the content protection requirements of the HDCP Specification and the Compliance Rules
You have to blame Sony.
Take a look at this project: https://github.com/gratianlup/SmartFlip. It uses WPF and the Thumbnail API.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With