Acerca de los iconos

El sistema usa iconos en toda la interfaz de usuario para representar objetos como archivos, carpetas, accesos directos, aplicaciones y documentos. Las funciones de icono permiten a las aplicaciones crear, cargar, mostrar, organizar, animar e destruir iconos. Para obtener información sobre cómo especificar iconos para los tipos de archivo, vea ExtractIcon.

Esta introducción proporciona información sobre los temas siguientes:

Icono de acceso frecuente

Uno de los píxeles de un icono se designa como la zona activa, que es el punto en el que el sistema realiza el seguimiento y reconoce como la posición del icono. La zona activa de un icono suele ser el píxel situado en el centro del icono. Si usa la función CreateIconIndirect para crear un icono, puede especificar cualquier píxel para que sea el punto de acceso frecuente.

Tipos de icono

El sistema operativo proporciona un conjunto de iconos estándar que están disponibles para que cualquier aplicación se use en cualquier momento. Los archivos de encabezado del kit de desarrollo de software (SDK) contienen identificadores para los iconos del sistema : los identificadores comienzan con el prefijo IDI_ .

Valor Significado
IDI_APPLICATION
MAKEINTRESOURCE(32512)
Icono de aplicación predeterminada
IDI_ERROR
MAKEINTRESOURCE(32513)
Icono de error
IDI_QUESTION
MAKEINTRESOURCE(32514)
Icono de signo de interrogación
IDI_WARNING
MAKEINTRESOURCE(32515)
Icono de advertencia
IDI_INFORMATION
MAKEINTRESOURCE(32516)
Icono de información
IDI_WINLOGO
MAKEINTRESOURCE(32517)
Icono de logotipo de Windows
IDI_SHIELD
MAKEINTRESOURCE(32518)
Icono de escudo de seguridad

Consulte Directrices para obtener información sobre el uso recomendado de iconos estándar.

Además, a partir de Windows Vista, hay disponible un conjunto adicional de iconos de shell del sistema estándar a través del método SHGetStockIconInfo .

Los iconos personalizados están diseñados para su uso en una aplicación determinada y pueden ser cualquier diseño. El usuario puede cargar iconos personalizados desde archivos o crearlos en tiempo de ejecución. A continuación se muestran varios iconos personalizados.

varios iconos personalizados

Tamaños de icono

El sistema usa cuatro tamaños de icono:

  • Sistema pequeño
  • Sistema grande
  • Shell pequeño
  • Shell grande
  • Jumbo (inicio de Windows Vista)

El icono pequeño del sistema se muestra en la ventana subtítulo.

Consulte Escalado de iconos para obtener recomendaciones sobre los tamaños de icono preferidos para la aplicación.

Para cambiar el tamaño del icono pequeño del sistema

  1. En Panel de control, haga clic en Mostrar y, a continuación, haga clic en la pestaña Apariencia.
  2. Seleccione Botones de título en la lista Elemento y, a continuación, establezca el campo Tamaño .

Para recuperar el tamaño del icono pequeño del sistema

Las aplicaciones usan principalmente el icono grande del sistema , pero también se muestra en el cuadro de diálogo Alt+Tab. Las funciones CreateIconFromResource, DrawIcon, ExtractAssociatedIcon, ExtractIcon, ExtractIconEx y LoadIcon usan iconos grandes del sistema. El controlador de vídeo define el tamaño del icono grande del sistema, por lo que no se puede cambiar.

Para recuperar el tamaño del icono grande del sistema

Las funciones CreateIcon, CreateIconFromResourceEx, CreateIconIndirect y SHGetFileInfo se pueden usar para trabajar con iconos en tamaños distintos del sistema grande.

El icono pequeño del shell se usa en el Explorador de Windows y en los cuadros de diálogo comunes. Actualmente, este valor predeterminado es el tamaño pequeño del sistema.

Para recuperar el tamaño del icono pequeño del shell

  1. Use la función SHGetFileInfo con SHGFI_SHELLICONSIZE | SHGFI_SMALLICON para recuperar un identificador de la lista de imágenes del sistema.
  2. A continuación, llame a la función ImageList_GetIconSize para obtener el tamaño del icono.

El icono grande del shell se usa en el escritorio.

Para cambiar el tamaño del icono grande

  1. En Panel de control , haga clic en Mostrar y, a continuación, en la pestaña Apariencia,
  2. Seleccione Icono en la lista Elemento y, a continuación, establezca el campo Tamaño (este tamaño se almacena en el Registro, en HKEY_CURRENT_USER\Control Panel, Desktop\WindowMetrics\Shell Icon Size).
  3. Haga clic en la pestaña Más! y, a continuación, active la casilla Usar iconos grandes .

Para recuperar el tamaño del icono grande del shell

  1. Use la función SHGetFileInfo con SHGFI_SHELLICONSIZE para recuperar un identificador en la lista de imágenes del sistema.
  2. A continuación, llame a la función ImageList_GetIconSize para obtener el tamaño del icono.

Al rellenar la estructura WNDCLASSEX que se va a usar en el registro de la clase de ventana, establezca el miembro hIcon en el icono grande del sistema (normalmente 32x32) y el miembro hIconSm en el icono pequeño del sistema (normalmente 16x16). Para obtener más información sobre los iconos de clase, vea Iconos de clase.

Creación de iconos

Los iconos estándar están predefinidos, por lo que no es necesario crearlos. Para usar un icono estándar, una aplicación puede obtener su identificador mediante la función LoadImage . Un identificador de icono es un valor único del tipo HICON que identifica un icono estándar o personalizado.

Para crear un icono personalizado para una aplicación, normalmente usaría una aplicación gráfica e incluiría el recurso ICON en el archivo de definición de recursos de la aplicación. En tiempo de ejecución, puede llamar a LoadIcon o LoadImage para recuperar un identificador en el icono. Un recurso de icono puede contener un grupo de imágenes para varios dispositivos de visualización diferentes. LoadIcon y LoadImage seleccionan automáticamente el icono más adecuado del grupo para el dispositivo de visualización actual.

Una aplicación también puede crear un icono personalizado en tiempo de ejecución mediante la función CreateIconIndirect , que crea un icono basado en el contenido de una estructura ICONINFO . La función GetIconInfo rellena la estructura con las coordenadas de punto activo e información sobre el mapa de bits de máscara de bits y el mapa de bits de color para el icono.

Las aplicaciones deben implementar iconos personalizados como recursos y deben usar LoadIcon o LoadImage, en lugar de crear el icono en tiempo de ejecución. El uso de recursos de iconos evita la dependencia del dispositivo, simplifica la localización y permite a las aplicaciones compartir formas de icono.

La función CreateIconFromResourceEx permite a una aplicación examinar los recursos del sistema y crear iconos y cursores basados en datos de recursos. CreateIconFromResourceEx crea un icono basado en datos de recursos binarios de otros archivos ejecutables o DLL. Una aplicación debe preceder a esta función con llamadas a la función LookupIconIdFromDirectoryEx y varias de las funciones de recursos. LookupIconIdFromDirectoryEx devuelve el identificador de los datos de icono más adecuados para el dispositivo de visualización actual.

Icono para mostrar

Puede recuperar la imagen de un icono mediante la función GetIconInfo y dibujarla mediante la función DrawIconEx . Para dibujar la imagen predeterminada de un icono, especifique la marca DI_COMPAT en la llamada a DrawIconEx. Si no especifica la marca DI_COMPAT , DrawIconEx dibuja el icono con la imagen especificada por el usuario.

Cuando el sistema muestra un icono, debe extraer la imagen de icono adecuada del archivo .exe o .dll. El sistema usa los pasos siguientes para seleccionar la imagen de icono:

  1. Seleccione el recurso RT_GROUP_ICON . Si existe más de un recurso de este tipo, el sistema usa el primer recurso que aparece en el scrip de recursos.
  2. Seleccione la imagen RT_ICON adecuada en el recurso RT_GROUP_ICON . Si existe más de una imagen, el sistema usa los siguientes criterios para elegir una imagen:
    • Se elige la imagen más cercana en tamaño al tamaño solicitado.
    • Si hay dos o más imágenes de ese tamaño, se elige la que coincide con la profundidad de color de la pantalla.
    • Si ninguna imagen coincide exactamente con la profundidad de color de la pantalla, se elige la imagen con la mayor profundidad de color que no supera la profundidad de color de la pantalla. Si todas superan la profundidad de color, se elige la que tiene la profundidad de color más baja.

Nota

El sistema trata todas las profundidades de color de 8 o más bpp como iguales. Por lo tanto, no hay ninguna ventaja de incluir una imagen de 16 x 16 256 colores y una imagen de 16 x 16 colores en el mismo recurso, el sistema simplemente elegirá la primera que encuentra. Cuando la pantalla está en modo 8-bpp, el sistema elegirá un icono de 16 colores sobre un icono de 256 colores y mostrará todos los iconos con la paleta predeterminada del sistema.

 

Para mostrar un icono animado, use un control estático como se muestra en el siguiente fragmento de código.

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

Icono Destrucción

Cuando una aplicación ya no necesita un icono creado mediante la función CreateIconIndirect , debe destruir el icono. La función DestroyIcon destruye el identificador de icono y libera cualquier memoria usada por el icono. Las aplicaciones solo deben usar esta función para los iconos creados con CreateIconIndirect; no es necesario destruir otros iconos.

Duplicación de iconos

La función CopyIcon copia un identificador de icono. Esto permite a una aplicación o DLL obtener su propio identificador en un icono propiedad de otro módulo. A continuación, si se libera el otro módulo, la aplicación que copió el icono podrá seguir usando el icono.

La función CopyImage crea un nuevo icono basado en el icono de origen especificado. El nuevo icono puede ser mayor o menor que el icono de origen.

Para obtener información sobre cómo agregar, quitar o reemplazar recursos de icono en archivos ejecutables (.exe), vea Recursos.

La función DuplicateIcon realiza una copia real del icono.