Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As alterações na paleta do sistema para o dispositivo de exibição podem ter efeitos dramáticos e, às vezes, indesejáveis nas cores usadas nas janelas da área de trabalho. Para minimizar o impacto dessas alterações, o sistema fornece um conjunto de mensagens que ajudam os aplicativos a gerenciar suas paletas lógicas, garantindo que as cores na janela ativa sejam o mais próximas possível das cores pretendidas.
O sistema envia uma mensagem WM_QUERYNEWPALETTE para uma janela de nível superior ou sobreposta pouco antes de ativar a janela. Essa mensagem oferece a um aplicativo a oportunidade de selecionar e realizar sua paleta lógica para que ele receba o melhor mapeamento possível de cores para sua paleta lógica. Quando o aplicativo recebe a mensagem, ele deve usar as funções SelectPalette, UnrealizeObjecte RealizePalette para selecionar e realizar a paleta lógica. Isso orienta o sistema a atualizar as cores na paleta do sistema para que suas cores correspondam ao máximo de cores na paleta lógica possível.
Quando um aplicativo causa alterações na paleta do sistema como resultado da realização de sua paleta lógica, o sistema envia uma mensagem WM_PALETTECHANGED para todas as janelas de nível superior e sobrepostas. Essa mensagem oferece aos aplicativos a oportunidade de atualizar as cores nas áreas cliente de suas janelas, substituindo cores que foram alteradas por cores que correspondem mais de perto às cores pretendidas. Um aplicativo que recebe a mensagem WM_PALETTECHANGED deve usar UnrealizeObject e RealizePalette para redefinir as paletas lógicas associadas a todas as janelas inativas e, em seguida, atualizar as cores na área do cliente para cada janela inativa usando a função UpdateColors. Essa técnica não garante o maior número de correspondências de cores exatas; no entanto, ele garante que as cores na paleta lógica sejam mapeadas para cores razoáveis na paleta do sistema.
Nota
Para evitar a criação de um loop infinito, um aplicativo nunca deve perceber a paleta da janela cujo identificador corresponde ao identificador passado no parâmetro wParam do da mensagem de WM_PALETTECHANGED.
A função UpdateColors normalmente atualiza uma área de cliente de uma janela inativa mais rapidamente do que redesenhar a área. No entanto, como UpdateColors executa a conversão de cores com base na cor de cada pixel antes que a paleta do sistema seja alterada, cada chamada para essa função resulta na perda de alguma precisão de cor. Isso significa que UpdateColors não podem ser usados para atualizar cores quando a janela se torna ativa. Nesses casos, o aplicativo deve redesenhar a área do cliente.
O sistema pode enviar a mensagem WM_QUERYNEWPALETTE quando são feitas alterações na paleta lógica. Além disso, o sistema pode enviar a mensagem WM_PALETTEISCHANGING para todas as janelas de nível superior e sobrepostas quando a paleta do sistema está prestes a ser alterada.