Насколько легко в DWM создать миниатюру «всегда сверху» для существующего окна

Мне очень нравится, когда вы наводите курсор на окно в Vista на панели задач, и это дает вам небольшой предварительный просмотр. если это видео, оно даже отображается в миниатюре.

Часто мне очень хочется «оторвать» это маленькое окошко и оставить его как иконку «всегда сверху» на моем экране. Может быть, это индикатор выполнения, который я смотрю, может быть, это видео, которое мне нужно для небольшого предварительного просмотра.

Разве DWM не упрощает программирование таких вещей. Будет ли это простым занятием для программирования на хорошо управляемом C # - или я в конечном итоге увязну в сложных API?

Меня интересуют как существующие решения, так и указатели на то, как кодировать что-то подобное.


person Simon_Weaver    schedule 15.02.2009    source источник


Ответы (3)


Очень хороший предварительный просмотр того, как использовать это в C #:

http://community.bartdesmet.net/blogs/bart/archive/2006/10/05/4495.aspx

person Wolf5    schedule 12.05.2009

Извините за саморекламу здесь. :) Просто упомяну, что уже есть приложение, которое позволяет клонировать каждое окно верхнего уровня и сохранять их предварительный просмотр «всегда наверху»: OnTopReplica.

Программа основана на библиотеке Windows Forms Aero, библиотеке .NET (c #), которая включает некоторые оболочки DWM. . Никаких сложных API-интерфейсов (да и вообще API довольно простое).

person LorenzCK    schedule 12.08.2009

Да, вы можете создавать свои собственные эскизы, похожие на панель задач. Однако вам придется немного манипулировать дескриптором окна. Принцип работы заключается в том, что вы создаете дочернее окно в своей форме, которое будет миниатюрой. Вы получаете дескриптор окна верхнего уровня, эскиз которого вы хотите, используя обычные приемы. Затем вы вызываете DWM-функцию DWMRegisterThumbnail, чтобы связать их. На самом деле вы вообще не участвуете в рисовании эскиза - после того, как окна связаны, процесс компоновки DWM позаботится о рисовании эскиза окна верхнего уровня в вашей форме.

Документация MSDN

person U62    schedule 15.02.2009