Visão geral da miniatura do DWM

O DWM (Gerenciador de Janelas da Área de Trabalho) habilita a exibição de representações em miniatura das janelas do aplicativo. Não são instantâneos estáticos de uma janela, mas sim conexões dinâmicas e constantes entre uma janela de origem em miniatura e um local em uma janela de destino que recebe a renderização em miniatura dinâmica. Isso permite uma exibição rápida da execução de aplicativos 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 dinâmica do Windows Vista vista quando você passa o mouse sobre o aplicativo na barra de tarefas.

Captura de tela que mostra a miniatura do D WM vista ao passar o mouse sobre um aplicativo na barra de tarefas.

A imagem a seguir ilustra o Flip do Windows Vista (ALT-TAB) habilitado pelo DWM.

captura de tela da guia alt habilitada para dwm

Observação

As miniaturas do DWM não permitem que os desenvolvedores criem aplicativos como o recurso WINKEY-TAB (Windows Vista Flip3D). As miniaturas são renderizadas diretamente para a janela de destino em 2D.

 

Relações de miniatura dwm

Para exibir miniaturas em seu aplicativo, primeiro você deve 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 a alça de miniatura. A miniatura é renderizada depois que o DWM_THUMBNAIL_PROPERTIES foi definido e a função DwmUpdateThumbnailProperties foi 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 da miniatura.

Para encerrar uma relação de miniatura, chame a função DwmUnregisterThumbnail .

O exemplo a seguir demonstra como criar um releationship com a área de trabalho do Windows e exibi-lo em um aplicativo.

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 Gerenciador de Janelas da Área de Trabalho

Habilitar e controlar a composição do DWM

Considerações de desempenho e práticas recomendadas