Pull to refresh

Программируем Windows 7: Taskbar. Часть 7 – ThumbnailClip

Reading time2 min
Views757
Как мы уже видели, Windows 7 обладает удобной функциональностью по отображению preview окон приложений. При наведении мыши на значок окна в панели задач можно посмотреть уменьшенное представление окна за считанные секунды. Это очень удобно когда у пользователя открыто большое количество окон.

По умолчанию в этих preview отображается все содержимое окна. Однако, для некоторых приложений было бы гораздо удобнее показывать в preview не все содержимое окна, а только его часть. Такая функциональность также предусмотрена для панели задач Windows 7 и мы можем использовать ее для своих приложений. Давайте разберемся с этой возможностью панели задач Windows 7.



Как обычно для этого будем использовать .NET Interop Sample Library. В рамках оберток для функций из системных библиотек Windows здесь присутствует метод SetThumbnailClip, который поможет нам в реализации данной функциональности. При вызове данного метода в параметрах необходимо передать текущий экземпляр формы и координаты, ограничивающие область окна.

private void Clip5_Click(object sender, EventArgs e)
{
WindowsFormsExtensions.SetThumbnailClip(this, new Rectangle(10, 10, 145, 145));
}


На этом примере хорошо видно, что использовать этот метод очень легко.

Давайте создадим небольшое приложение, где посмотрим на возможности этой функциональности. Для этого я создам пустое приложение, в которое добавлю несколько несколько элементов управления. После запуска приложения preview окна будет выглядеть следующим образом.



Видно, что изначально в preview отображается все окно. Давайте ограничим область отображения при помощи метода SetThumbnailClip. Отобразим, например, только поля ввода, которые находятся на форме.



Что интересно, если у нас на форме имеется динмический контент (например, видео), то он будет отображаться в динамике. В демонстрационном приложении я разместил несколько анимированных изображений и отобразил их в рамках preview. При этом нет необходимости для этого делать что-то еще.



Что важно, в процессе работы приложения мы можем изменять содержимое preview. Например, в какой-то момент времени нам может быть необходимо вывести содержимое какого-то важного поля ввода, а в другой момент — отобразить изображение с формы. Такая динамичность может дать пользователю возможность получать актуальную для него информацию.

Наконец если нам необходимо отобразить все содержимое формы можно использовать тот же самый метод, но передать ему размеры всей формы. В этом случае в preview снова будет отображаться все окно.

private void NoClip_Click(object sender, EventArgs e)
{
WindowsFormsExtensions.SetThumbnailClip(this, new Rectangle(new Point(0, 0), Size));
}


Демонстрационное приложение:
Taskbar-ThumbnailClip.zip
Tags:
Hubs:
Total votes 74: ↑52 and ↓22+30
Comments16

Articles