Přehled miniatur DWM
Správce oken plochy (DWM) umožňuje zobrazit miniatury znázornění oken aplikací. Nejedná se o statické snímky okna, ale jsou to dynamická konstantní připojení mezi oknem zdroje miniatur a umístěním v cílovém okně, které přijímá vykreslování živých miniatur. To umožňuje rychlé zobrazení spuštěných aplikací tak, že na hlavním panelu najedete myší na aplikaci nebo pomocí gesta klávesy ALT-TAB zobrazíte a rychle přepnete na aplikaci.
Následující obrázek znázorňuje živou miniaturu systému Windows Vista zobrazenou při najetí myší na aplikaci na hlavním panelu.
Následující obrázek znázorňuje funkci Windows Vista Flip (ALT-TAB) povolenou DWM.
Poznámka
Miniatury DWM neumožňují vývojářům vytvářet aplikace, jako je funkce Windows Vista Flip3D (WINKEY-TAB). Náhledy se vykreslují přímo do cílového okna ve 2D.
Vztahy miniatur DWM
Pokud chcete v aplikaci zobrazit miniatury, musíte nejprve vytvořit relaci mezi zdrojovým oknem a cílovým oknem. To se provádí voláním funkce DwmRegisterThumbnail.
DwmRegisterThumbnail nevykreslí miniaturu v cílovém okně, ale pouze vytvoří relaci a poskytne úchyt miniatury. Miniatura je vykreslena poté, co byly nastaveny DWM_THUMBNAIL_PROPERTIES a byla zavolána funkce DwmUpdateThumbnailProperties. Následná volání DwmUpdateThumbnailProperties aktualizují miniaturu pomocí nové sady vlastností. DWM také poskytuje pomocnou funkci DwmQueryThumbnailSourceSize, aby získal velikost zdrojového okna z miniatury.
Pokud chcete ukončit relaci miniatur, zavolejte funkci DwmUnregisterThumbnail.
Následující příklad demonstruje, jak vytvořit vztah s plochou Windows a zobrazit jej v aplikaci.
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;
Související témata