Visão geral da miniatura do DWM
O Desktop Window Manager (DWM) permite a exibição de representações em miniatura de janelas de aplicativos. Estes não são instantâneos estáticos de uma janela, mas são conexões dinâmicas e constantes entre uma janela de origem de miniatura e um local em uma janela de destino que recebe a renderização de miniatura ao vivo. Isso permite uma visualização rápida dos aplicativos em execução passando o mouse sobre o aplicativo na barra de tarefas ou usando o gesto de tecla ALT-TAB para ver e alternar rapidamente para um aplicativo.
A imagem a seguir ilustra a miniatura ao vivo do Windows Vista vista quando você passa o mouse sobre o aplicativo na barra de tarefas.
A imagem a seguir ilustra o Windows Vista Flip (ALT-TAB) habilitado pelo DWM.
Nota
As miniaturas DWM não permitem que os desenvolvedores criem aplicativos como o recurso Windows Vista Flip3D (WINKEY-TAB). As miniaturas são renderizadas diretamente na janela de destino em 2D.
Para exibir miniaturas em seu aplicativo, você deve primeiro estabelecer uma relação entre uma janela de origem e uma janela de destino. Isso é feito chamando a função DwmRegisterThumbnail.
DwmRegisterThumbnail não renderiza uma miniatura na janela de destino, mas apenas cria a relação e fornece o identificador de miniatura. A miniatura é renderizada após a DWM_THUMBNAIL_PROPERTIES ter sido definida e a função DwmUpdateThumbnailProperties ter sido chamada. Chamadas subsequentes para DwmUpdateThumbnailProperties atualizam a miniatura com um novo conjunto de propriedades. O DWM também fornece a função auxiliar DwmQueryThumbnailSourceSize para obter o tamanho da janela de origem a partir da miniatura.
Para encerrar um vínculo de miniatura, chame a função DwmUnregisterThumbnail.
A seguinte demonstração demonstra como criar uma relação com a área de trabalho do Windows e exibi-la numa aplicação.
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;
-
Visão geral do Desktop Window Manager