Что такое API для «создания приложений, подобных Flip3D»

Я пытаюсь понять, как использовать DWM для рендеринга копии окна в моем желаемом месте. Единственное, что я могу найти, чтобы указать DWM где-то рендерить, - это API-интерфейсы эскизов.

Но MSDN Обзор эскизов DWM они специально предупреждают меня:

Примечание эскизы DWM не позволяют разработчикам для создания таких приложений, как Windows Vista Flip3D (WINKEY-TAB) характерная черта. Миниатюры отображаются прямо в окно назначения в 2-D.

Мне сказали, что api эскизов нельзя использовать для создания таких приложений, как Flip3D, но они не говорят, какой api может использоваться для создания приложений, таких как Windows Flip3D.

] Итак, какой API может использоваться для создания приложений, подобных Windows Vista Flip3D?


Предпосылки

При работе Windows Desktop Composition приложения рисуют клиентскую область своего окна в свой собственный частный буфер. (Это контрастирует с предыдущими версиями Windows, где каждое приложение рисовало прямо на экране). Это изображение клиентской области затем помещается во фрейм (панель заголовка, кнопки свертывания, развертывания, восстановления и т. Д.), А затем рисуется (т.е. совмещается) на рабочем столе - вместе со всеми другими открытыми окнами:

alt text

Потому что это буфер частный, и поскольку видеокарты за последние несколько лет стали мощными при выполнении трехмерных задач, Windows может начать выполнять некоторые изящные трюки. Один из них - возможность манипулировать клиентским окном, изменяя его масштаб и перспективу. Это позволяет активировать api «эскизов» - где Windows будет рисовать копию окна размером с эскиз, где вы ей указываете. Поскольку все это происходит на оборудовании, это происходит очень быстро.

Другая возможность - это Flip3D (Win + Tab). Композитор может выполнять трехмерное позиционирование окна. Опять же, поскольку все это делается аппаратно, это происходит очень быстро.

Я обнаружил, что API-интерфейс сообщает Desktop Window Monitor, чтобы он нарисовал мне эскиз приложения «здесь»:

//Register a thumbnail we want
DwmRegisterThumbnail({in}hwndDestination, {in}hwndSource, out thumbnail);

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

Но я не могу найти API для скажите DWM нарисовать мне полноразмерную версию окна.


Изменить : разработан для эффективного воспрепятствовать попыткам изменить такие Лицензионные продукты, чтобы нарушить требования защиты контента, указанные в Спецификации HDCP и Правила соблюдения.

  • Лицензионные продукты должны разрабатываться и производиться таким образом, который явно предназначен для эффективного предотвращения попыток обнаруживать или раскрывать ключи устройств или другие строго конфиденциальные Информация

  • Лицензионные продукты должны использовать, по крайней мере, следующие методы таким образом, который явно предназначен для эффективного предотвращения попыток чтобы обойти требования защиты контента HDCP Спецификация и правила соответствия

  • Вы должны винить Sony.

    8
    задан Ian 30 July 2013 в 08:48
    поделиться