Compartir a través de


Búsqueda y carga de recursos

Antes de usar un recurso, una aplicación debe cargarla en la memoria. Las funciones FindResource y FindResourceEx buscan un recurso en un módulo y devuelven un identificador a los datos de recursos binarios. FindResource busca un recurso por tipo y nombre. FindResourceEx busca el recurso por tipo, nombre y idioma. La información sobre FindResource en este tema también se aplica a FindResourceEx.

La función LoadResource usa el identificador de recursos devuelto por FindResource para cargar el recurso en memoria. Una vez que una aplicación carga un recurso mediante LoadResource, el sistema descargará la memoria asociada solo cuando todas las referencias a su módulo se liberen a través de FreeLibrary. Las aplicaciones que necesitan tener acceso repetidamente a los mismos recursos o a muchos recursos de un módulo determinado pueden incurrir en penalizaciones de rendimiento debido a que la asignación de memoria tiene lugar en llamadas repetidas a LoadLibrary y FreeLibrary . Las aplicaciones deben almacenar un único identificador de módulo hasta que los recursos ya no sean necesarios y, a continuación, llamar a FreeLibrary. Después de descargar un módulo de la memoria, los identificadores de recursos no son válidos.

Una aplicación puede usar FindResource y LoadResource para buscar y cargar cualquier tipo de recurso, pero estas funciones solo se deben usar en una de estas situaciones:

  • Cuando la aplicación no puede acceder al recurso mediante una función específica del recurso existente.
  • Cuando la aplicación debe tener acceso al recurso como datos binarios para las llamadas de función posteriores.

Siempre que sea posible, una aplicación debe usar una de las siguientes funciones específicas del recurso para buscar y cargar recursos en una llamada:

Función Acción Para quitar el recurso
FormatMessage Carga y da formato a una entrada de tabla de mensajes. No se requiere ninguna acción.
LoadAccelerators Carga una tabla de aceleradores. DestroyAcceleratorTable
LoadBitmap Carga un recurso de mapa de bits. DeleteObject
LoadCursor Carga un recurso de cursor. DestroyCursor
LoadIcon Carga un recurso de icono. Destroyicon
LoadImage Carga un icono, un cursor o un mapa de bits. DestroyIcon, DestroyCursor, DeleteObject
LoadMenu Carga un recurso de menú. DestroyMenu
LoadString Carga una entrada de tabla de cadenas. No se requiere ninguna acción.

 

Anote las funciones de versión de la tabla anterior. Antes de finalizar, una aplicación debe liberar la memoria ocupada por tablas de aceleradores, mapas de bits, cursores, iconos y menús mediante las funciones adecuadas.

La memoria asociada a los recursos cargados a través de FindResource y LoadResource se liberarán una vez que el módulo se haya descargado mediante una llamada a FreeLibrary. El sistema liberará automáticamente los recursos que permanezcan descargados en la finalización de la aplicación.