Bagikan melalui


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.

Cuplikan layar yang memperlihatkan gambar mini D W M terlihat saat mengarahkan mouse ke atas aplikasi di taskbar.

Gambar berikut mengilustrasikan Windows Vista Flip (ALT-TAB) yang diaktifkan oleh DWM.

cuplikan layar tab alt yang diaktifkan 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.

 

Hubungan Gambar Mini DWM

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;

Gambaran Umum Manajer Jendela Desktop

Mengaktifkan dan Mengontrol Komposisi DWM

Pertimbangan Performa dan Praktik Terbaik