Compartilhar via


Função UpdateLayeredWindow (winuser.h)

Atualiza a posição, o tamanho, a forma, o conteúdo e a transluscência de uma janela em camadas.

Sintaxe

BOOL UpdateLayeredWindow(
  [in]           HWND          hWnd,
  [in, optional] HDC           hdcDst,
  [in, optional] POINT         *pptDst,
  [in, optional] SIZE          *psize,
  [in, optional] HDC           hdcSrc,
  [in, optional] POINT         *pptSrc,
  [in]           COLORREF      crKey,
  [in, optional] BLENDFUNCTION *pblend,
  [in]           DWORD         dwFlags
);

Parâmetros

[in] hWnd

Digite: HWND

Um identificador para uma janela em camadas. Uma janela em camadas é criada especificando WS_EX_LAYERED ao criar a janela com a função CreateWindowEx .

Windows 8: o estilo de WS_EX_LAYERED tem suporte para janelas de nível superior e janelas filho. As versões anteriores do Windows dão suporte apenas a WS_EX_LAYERED para janelas de nível superior.

[in, optional] hdcDst

Tipo: HDC

Um identificador para um controlador de domínio para a tela. Esse identificador é obtido especificando NULL ao chamar a função GetDC . Ele é usado para correspondência de cores de paleta quando o conteúdo da janela é atualizado. Se hdcDst for NULL, a paleta padrão será usada.

Se hdcSrc for NULL, hdcDst deverá ser NULL.

[in, optional] pptDst

Tipo: POINT*

Um ponteiro para uma estrutura que especifica a nova posição da tela da janela em camadas. Se a posição atual não estiver sendo alterada, pptDst poderá ser NULL.

[in, optional] psize

Tipo: SIZE*

Um ponteiro para uma estrutura que especifica o novo tamanho da janela em camadas. Se o tamanho da janela não estiver sendo alterado, psize poderá ser NULL. Se hdcSrc for NULL, psize deverá ser NULL.

[in, optional] hdcSrc

Tipo: HDC

Um identificador para um controlador de domínio para a superfície que define a janela em camadas. Esse identificador pode ser obtido chamando a função CreateCompatibleDC . Se a forma e o contexto visual da janela não estiverem sendo alterados, hdcSrc poderá ser NULL.

[in, optional] pptSrc

Tipo: POINT*

Um ponteiro para uma estrutura que especifica o local da camada no contexto do dispositivo. Se hdcSrc for NULL, pptSrc deverá ser NULL.

[in] crKey

Tipo: COLORREF

Uma estrutura que especifica a chave de cor a ser usada ao redigir a janela em camadas. Para gerar um COLORREF, use a macro RGB .

[in, optional] pblend

Tipo: BLENDFUNCTION*

Um ponteiro para uma estrutura que especifica o valor de transparência a ser usado ao redigir a janela em camadas.

[in] dwFlags

Tipo: DWORD

Esse parâmetro pode usar um dos valores a seguir.

Valor Significado
ULW_ALPHA
0x00000002
Use pblend como a função blend. Se o modo de exibição for de 256 cores ou menos, o efeito desse valor será o mesmo que o efeito de ULW_OPAQUE.
ULW_COLORKEY
0x00000001
Use crKey como a cor de transparência.
ULW_OPAQUE
0x00000004
Desenhe uma janela opaca em camadas.
ULW_EX_NORESIZE
0x00000008
Force a função UpdateLayeredWindowIndirect a falhar se o tamanho da janela atual não corresponder ao tamanho especificado no psize.
 

Se hdcSrc for NULL, dwFlags deverá ser zero.

Retornar valor

Tipo: BOOL

Se a função for bem-sucedida, o valor retornado será diferente de zero.

Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError.

Comentários

O DC de origem deve conter a superfície que define o conteúdo visível da janela em camadas. Por exemplo, você pode selecionar um bitmap em um contexto de dispositivo obtido chamando a função CreateCompatibleDC .

Um aplicativo deve chamar SetLayout no contexto do dispositivo hdcSrc para definir corretamente o modo de espelhamento. SetLayout espelho corretamente todos os desenhos em um HDC, preservando corretamente o glifo de texto e (opcionalmente) a ordem de direção do bitmap. Ele não pode modificar o desenho diretamente nos bits de um DIB (bitmap independente do dispositivo). Para obter mais informações, consulte Layout e espelhamento de janela.

A função UpdateLayeredWindow mantém a aparência da janela na tela. As janelas abaixo de uma janela em camadas não precisam ser repintadas quando são descobertas devido a uma chamada para UpdateLayeredWindow, pois o sistema as repintará automaticamente. Isso permite a animação perfeita da janela em camadas.

UpdateLayeredWindow sempre atualiza toda a janela. Para atualizar parte de uma janela, use o WM_PAINT tradicional e defina o valor de mesclagem usando SetLayeredWindowAttributes.

Para obter o melhor desempenho de desenho pela janela em camadas e pelas janelas subjacentes, a janela em camadas deve ser o menor possível. Um aplicativo também deve processar a mensagem e recriar suas janelas em camadas quando a profundidade da cor da exibição for alterada.

Para obter mais informações, consulte Windows em camadas.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho winuser.h (inclua Windows.h)
Biblioteca User32.lib
DLL User32.dll
Conjunto de APIs ext-ms-win-ntuser-window-l1-1-1 (introduzido no Windows 8.1)

Confira também

Alphablend

Conceitual

Createcompatiblebitmap

Outros recursos

Referência

Setwindowlong

Setwindowpos

Transparentblt

UpdateLayeredWindowIndirect

Windows