Gambaran Umum Gambar Mini DWM
Desktop Window Manager (DWM) memungkinkan tampilan representasi gambar mini jendela aplikasi. Ini bukan rekam jepret statis jendela, tetapi sebaliknya dinamis, koneksi konstan antara jendela sumber gambar mini dan lokasi di jendela tujuan yang menerima penyajian gambar mini langsung. Hal ini memungkinkan tampilan cepat aplikasi yang berjalan dengan mengarahkan kubah ke aplikasi di taskbar atau menggunakan gerakan kunci ALT-TAB untuk melihat dan beralih ke aplikasi dengan cepat.
Gambar berikut mengilustrasikan gambar mini langsung Windows Vista yang terlihat saat Anda mengarahkan mouse ke atas aplikasi pada taskbar.
Gambar berikut mengilustrasikan Windows Vista Flip (ALT-TAB) yang diaktifkan oleh DWM.
Catatan
Gambar mini DWM tidak memungkinkan pengembang untuk membuat aplikasi seperti fitur Windows Vista Flip3D (WINKEY-TAB). Gambar mini dirender langsung ke jendela tujuan dalam 2-D.
Untuk menampilkan gambar mini di aplikasi, Anda harus terlebih dahulu membuat hubungan antara jendela sumber dan jendela tujuan. Ini dilakukan dengan memanggil fungsi DwmRegisterThumbnail .
DwmRegisterThumbnail tidak merender gambar mini pada jendela tujuan tetapi hanya membuat hubungan dan menyediakan handel gambar mini. Gambar mini dirender setelah DWM_THUMBNAIL_PROPERTIES diatur dan fungsi DwmUpdateThumbnailProperties telah dipanggil. Panggilan berikutnya ke DwmUpdateThumbnailProperties memperbarui gambar mini dengan sekumpulan properti baru. DWM juga menyediakan fungsi pembantu DwmQueryThumbnailSourceSize untuk mendapatkan ukuran jendela sumber dari gambar mini.
Untuk mengakhiri hubungan gambar mini, panggil fungsi DwmUnregisterThumbnail .
Contoh berikut menunjukkan cara membuat releationship dengan desktop Windows dan menampilkannya dalam aplikasi.
HRESULT hr = S_OK;
HTHUMBNAIL thumbnail = NULL;
// Register the thumbnail
hr = DwmRegisterThumbnail(hwnd, FindWindow(_T("Progman"), NULL), &thumbnail);
if (SUCCEEDED(hr))
{
// Specify the destination rectangle size
RECT dest = {0,50,100,150};
// Set the thumbnail properties for use
DWM_THUMBNAIL_PROPERTIES dskThumbProps;
dskThumbProps.dwFlags = DWM_TNP_SOURCECLIENTAREAONLY | DWM_TNP_VISIBLE | DWM_TNP_OPACITY | DWM_TNP_RECTDESTINATION;
dskThumbProps.fSourceClientAreaOnly = FALSE;
dskThumbProps.fVisible = TRUE;
dskThumbProps.opacity = (255 * 70)/100;
dskThumbProps.rcDestination = dest;
// Display the thumbnail
hr = DwmUpdateThumbnailProperties(thumbnail,&dskThumbProps);
if (SUCCEEDED(hr))
{
// ...
}
}
return hr;