Compartilhar via


Sobre ícones

O sistema usa ícones em toda a interface do usuário para representar objetos como arquivos, pastas, atalhos, aplicativos e documentos. As funções de ícone permitem que os aplicativos criem, carreguem, exibam, organizem, animem e destruam ícones. Para obter informações sobre como especificar ícones para tipos de arquivo, consulte ExtractIcon.

Esta visão geral fornece informações sobre os seguintes tópicos:

Ícone ponto de acesso

Um dos pixels em um ícone é designado como o ponto de acesso, que é o ponto que o sistema rastreia e reconhece como a posição do ícone. O ponto de acesso de um ícone normalmente é o pixel localizado no centro do ícone. Se você usar a função CreateIconIndirect para criar um ícone, poderá especificar qualquer pixel para ser o ponto de acesso.

Tipos de ícone

O sistema operacional fornece um conjunto de ícones padrão que estão disponíveis para qualquer aplicativo usar a qualquer momento. Os arquivos de cabeçalho do SDK (software development kit) contêm identificadores para os ícones do sistema — os identificadores começam com o prefixo IDI_ .

Valor Significado
IDI_APPLICATION
MAKEINTRESOURCE(32512)
Ícone do aplicativo padrão
IDI_ERROR
MAKEINTRESOURCE(32513)
Ícone de erro
IDI_QUESTION
MAKEINTRESOURCE(32514)
Ícone de ponto de interrogação
IDI_WARNING
MAKEINTRESOURCE(32515)
Ícone de aviso
IDI_INFORMATION
MAKEINTRESOURCE(32516)
Ícone de informações
IDI_WINLOGO
MAKEINTRESOURCE(32517)
Ícone do logotipo do Windows
IDI_SHIELD
MAKEINTRESOURCE(32518)
Ícone de escudo de segurança

Consulte Diretrizes para obter informações sobre o uso recomendado de ícones padrão.

Além disso, a partir do Windows Vista, um conjunto adicional de ícones de shell do sistema padrão está disponível por meio do método SHGetStockIconInfo .

Ícones personalizados são projetados para uso em um aplicativo específico e podem ser qualquer design. O usuário pode carregar ícones personalizados de arquivos ou criá-los em tempo de execução. A seguir estão vários ícones personalizados.

vários ícones personalizados

Tamanhos de ícone

O sistema usa quatro tamanhos de ícone:

  • Sistema pequeno
  • Sistema grande
  • Shell pequeno
  • Shell grande
  • Jumbo (iniciando o Windows Vista)

O ícone pequeno do sistema é exibido na janela legenda.

Consulte Dimensionamento de ícones para obter recomendações sobre tamanhos de ícone preferenciais para seu aplicativo.

Para alterar o tamanho do ícone pequeno do sistema

  1. Em Painel de Controle, clique em Exibir e, em seguida, clique na guia Aparência.
  2. Selecione Botões de Legenda na lista Item e, em seguida, defina o campo Tamanho .

Para recuperar o tamanho do ícone pequeno do sistema

O ícone grande do sistema é usado principalmente por aplicativos, mas também é exibido na caixa de diálogo Alt+Tab. As funções CreateIconFromResource, DrawIcon, ExtractAssociatedIcon, ExtractIcon, ExtractIconEx e LoadIcon usam ícones grandes do sistema. O tamanho do ícone grande do sistema é definido pelo driver de vídeo, portanto, ele não pode ser alterado.

Para recuperar o tamanho do ícone grande do sistema

As funções CreateIcon, CreateIconFromResourceEx, CreateIconIndirect e SHGetFileInfo podem ser usadas para trabalhar com ícones em tamanhos diferentes do grande sistema.

O ícone pequeno do shell é usado na Explorer do Windows e nas caixas de diálogo comuns. Atualmente, o padrão é o tamanho pequeno do sistema.

Para recuperar o tamanho do ícone pequeno do shell

  1. Use a função SHGetFileInfo com SHGFI_SHELLICONSIZE | SHGFI_SMALLICON para recuperar um identificador para a lista de imagens do sistema.
  2. Em seguida, chame a função ImageList_GetIconSize para obter o tamanho do ícone.

O ícone de shell grande é usado na área de trabalho.

Para alterar o tamanho do ícone grande

  1. Em Painel de Controle , clique em Exibir e, em seguida, clique na guia Aparência,
  2. Selecione Ícone na lista Item e defina o campo Tamanho (esse tamanho é armazenado no registro, em HKEY_CURRENT_USER\Control Panel, Desktop\WindowMetrics\Shell Icon Size).
  3. Clique na guia Mais! e selecione a caixa Usar Ícones Grandes marcar.

Para recuperar o tamanho do ícone grande do shell

  1. Use a função SHGetFileInfo com SHGFI_SHELLICONSIZE para recuperar um identificador para a lista de imagens do sistema.
  2. Em seguida, chame a função ImageList_GetIconSize para obter o tamanho do ícone.

Ao preencher a estrutura WNDCLASSEX a ser usada no registro da classe de janela, defina o membro hIcon como o ícone grande do sistema (geralmente 32x32) e o membro hIconSm para o ícone pequeno do sistema (geralmente 16x16). Para obter mais informações sobre ícones de classe, consulte Ícones de classe.

Criação de ícone

Os ícones padrão são predefinidos, portanto, não é necessário criá-los. Para usar um ícone padrão, um aplicativo pode obter seu identificador usando a função LoadImage . Um identificador de ícone é um valor exclusivo do tipo HICON que identifica um ícone padrão ou personalizado.

Para criar um ícone personalizado para um aplicativo, você normalmente usaria um aplicativo gráfico e incluiria o recurso ICON no arquivo de definição de recursos do aplicativo. Em tempo de execução, você pode chamar LoadIcon ou LoadImage para recuperar um identificador para o ícone. Um recurso de ícone pode conter um grupo de imagens para vários dispositivos de exibição diferentes. LoadIcon e LoadImage selecionam automaticamente o ícone mais apropriado do grupo para o dispositivo de exibição atual.

Um aplicativo também pode criar um ícone personalizado em tempo de execução usando a função CreateIconIndirect , que cria um ícone com base no conteúdo de uma estrutura ICONINFO . A função GetIconInfo preenche a estrutura com as coordenadas de ponto quente e informações sobre o bitmap de bitmask e o bitmap de cor do ícone.

Os aplicativos devem implementar ícones personalizados como recursos e devem usar LoadIcon ou LoadImage, em vez de criar o ícone em tempo de execução. O uso de recursos de ícone evita a dependência do dispositivo, simplifica a localização e permite que os aplicativos compartilhem formas de ícone.

A função CreateIconFromResourceEx permite que um aplicativo navegue pelos recursos do sistema e crie ícones e cursores com base em dados de recursos. CreateIconFromResourceEx cria um ícone com base em dados de recursos binários de outros arquivos executáveis ou DLLs. Um aplicativo deve preceder essa função com chamadas para a função LookupIconIdFromDirectoryEx e várias das funções de recurso. LookupIconIdFromDirectoryEx retorna o identificador dos dados de ícone mais apropriados para o dispositivo de exibição atual.

Exibição do ícone

Você pode recuperar a imagem de um ícone usando a função GetIconInfo e pode desenhá-la usando a função DrawIconEx . Para desenhar a imagem padrão de um ícone, especifique o sinalizador DI_COMPAT na chamada para DrawIconEx. Se você não especificar o sinalizador DI_COMPAT , DrawIconEx desenhará o ícone usando a imagem especificada pelo usuário.

Quando o sistema exibe um ícone, ele deve extrair a imagem de ícone apropriada do arquivo .exe ou .dll. O sistema usa as seguintes etapas para selecionar a imagem de ícone:

  1. Selecione o recurso RT_GROUP_ICON . Se houver mais de um desses recursos, o sistema usará o primeiro recurso listado no scrip de recursos.
  2. Selecione a imagem de RT_ICON apropriada no recurso RT_GROUP_ICON . Se houver mais de uma imagem, o sistema usará os seguintes critérios para escolher uma imagem:
    • A imagem mais próxima do tamanho solicitado é escolhida.
    • Se duas ou mais imagens desse tamanho estiverem presentes, a que corresponde à profundidade de cor da exibição será escolhida.
    • Se nenhuma imagem corresponder exatamente à profundidade de cor da exibição, a imagem com a maior profundidade de cor que não excede a profundidade de cor da exibição será escolhida. Se todos excederem a profundidade da cor, aquele com a menor profundidade de cor será escolhido.

Observação

O sistema trata todas as profundidades de cor de 8 ou mais bpp como iguais. Portanto, não há nenhuma vantagem de incluir uma imagem de 16 x 16 cores de 256 cores e uma imagem de 16 x 16 cores no mesmo recurso. O sistema simplesmente escolherá a primeira que encontrar. Quando a exibição estiver no modo 8 bpp, o sistema escolherá um ícone de 16 cores em um ícone de 256 cores e exibirá todos os ícones usando a paleta padrão do sistema.

 

Para exibir um ícone animado, use um controle estático, conforme mostrado no fragmento de código a seguir.

hIcon = LoadImage(NULL, "ico.ani", IMAGE_ICON, 0, 0, LR_LOADFROMFILE);
SendMessage( hStatic, STM_SETIMAGE, IMAGE_ICON, (LPARAM)(UINT)hIcon);

Destruição de ícone

Quando um aplicativo não precisa mais de um ícone criado usando a função CreateIconIndirect , ele deve destruir o ícone. A função DestroyIcon destrói o identificador de ícone e libera qualquer memória usada pelo ícone. Os aplicativos devem usar essa função somente para ícones criados com CreateIconIndirect; não é necessário destruir outros ícones.

Duplicação de ícone

A função CopyIcon copia um identificador de ícone. Isso permite que um aplicativo ou DLL obtenha seu próprio identificador para um ícone pertencente a outro módulo. Em seguida, se o outro módulo for liberado, o aplicativo que copiou o ícone ainda poderá usar o ícone.

A função CopyImage cria um novo ícone com base no ícone de origem especificado. O novo ícone pode ser maior ou menor que o ícone de origem.

Para obter informações sobre como adicionar, remover ou substituir recursos de ícone em arquivos executáveis (.exe), consulte Recursos.

A função DuplicateIcon faz uma cópia real do ícone.