Después de que los estudiantes de Visual Basic aprendan todo sobre bucles y declaraciones condicionales y subrutinas, etc., uno de los siguientes Lo que a menudo preguntan es: "¿Cómo agrego un mapa de bits, un archivo wav, un cursor personalizado u otro efecto especial?" Uno la respuesta es archivos de recursos. Cuando agrega un archivo utilizando los archivos de recursos de Visual Studio, se integran directamente en su proyecto de Visual Basic para obtener la máxima velocidad de ejecución y las mínimas molestias. embalaje y despliegue tu solicitud.
Los archivos de recursos están disponibles en VB 6 y VB.NET, pero la forma en que se usan, como todo lo demás, es bastante diferente entre los dos sistemas. Tenga en cuenta que esta no es la única forma de usar archivos en un proyecto VB, pero tiene ventajas reales. Por ejemplo, podría incluir un mapa de bits en un Cuadro de imagen controlar o usar el mciSendString Win32 API. "MCI" es un prefijo que generalmente indica una cadena de comando multimedia.
Crear un archivo de recursos en VB 6
Puede ver los recursos en un proyecto tanto en VB 6 como en VB.NET en Explorador de proyectos ventana (Explorador de soluciones en VB.NET: tuvieron que hacerlo un poco diferente). Un nuevo proyecto no tendrá ninguno ya que los recursos no son una herramienta predeterminada en VB 6. Entonces, agreguemos un recurso simple a un proyecto y veamos cómo se hace.
El primer paso es iniciar VB 6 seleccionando un EXE estándar proyecto en el Nuevo pestaña en el cuadro de diálogo de inicio. Ahora seleccione el Complementos opción en la barra de menú, y luego la Administrador de complementos ... Esto abrirá la ventana de diálogo del Administrador de complementos.
Desplácese hacia abajo en la lista y encuentre Editor de recursos VB 6. Puede hacer doble clic en él o poner una marca de verificación en el Cargado / descargado cuadro para agregar esta herramienta a su entorno VB 6. Si cree que va a utilizar mucho el Editor de recursos, también puede colocar una marca de verificación en la casilla Cargar al inicio y no tendrás que seguir este paso nuevamente en el futuro. Haga clic en "Aceptar" y se abrirá el Editor de recursos. ¡Estás listo para comenzar a agregar recursos a tu proyecto!
Ve a la barra de menú y selecciona Proyecto luego Agregar nuevo archivo de recursos o simplemente haga clic derecho en el Editor de recursos y seleccione "Abrir" en el menú contextual que aparece. Se abrirá una ventana que le solicitará el nombre y la ubicación de un archivo de recursos. La ubicación predeterminada probablemente no sea la que desea, así que vaya a la carpeta de su proyecto e ingrese el nombre de su nuevo archivo de recursos en el Nombre del archivo caja. En este artículo, usaré el nombre "AboutVB.RES" para este archivo. Deberá confirmar la creación del archivo en una ventana de verificación, y el archivo "AboutVB.RES" se creará y se completará en el Editor de recursos.
Soportes VB6
VB6 admite lo siguiente:
- Un editor de tabla de cadenas
("Editar tablas de cadenas ...") - Cursores personalizados - archivos "CUR"
("Agregar cursor ...") - Iconos personalizados: archivos "ICO"
("Agregar icono ...") - Mapas de bits personalizados: archivos "BMP"
("Agregar mapa de bits ...") - Recursos definidos por el programador
("Agregar recurso personalizado ...")
VB 6 proporciona un editor simple para cadenas, pero debe tener un archivo creado en otra herramienta para todas las demás opciones. Por ejemplo, puede crear un archivo BMP usando el simple programa de Windows Paint.
Cada recurso en el archivo de recursos se identifica a VB 6 por un Carné de identidad y un nombre en el Editor de recursos. Para hacer que un recurso esté disponible para su programa, debe agregarlo en el Editor de recursos y luego usar el Id y el recurso "Tipo" para señalarlos en su programa. Agreguemos cuatro íconos al archivo de recursos y usémoslos en el programa.
Cuando agrega un recurso, el archivo real se copia en su proyecto. Visual Studio 6 proporciona una colección completa de iconos en la carpeta ...
C: \ Archivos de programa \ Microsoft Visual Studio \ Common \ Graphics \ Icons
Para seguir con la tradición, seleccionaremos los cuatro "elementos" del filósofo griego Aristóteles - Tierra, Agua, Aire y Fuego - del subdirectorio Elementos. Cuando los agrega, Visual Studio asigna el ID (101, 102, 103 y 104) automáticamente.
Para usar los íconos en un programa, usamos una función VB 6 "Load Resource". Hay varias de estas funciones para elegir:
- LoadResPicture (índice, formato) para mapas de bits, iconos y cursores
Use las constantes predefinidas de VB vbResBitmap para mapas de bits, vbResIcon para iconos y vbResCursor para cursores para el parámetro "formato". Esta función devuelve una imagen que puede usar directamente. LoadResData (explicado a continuación) devuelve una cadena que contiene los bits reales en el archivo. Veremos cómo usar eso después de demostrar los íconos.
- LoadResString (índice) para cuerdas
- LoadResData (índice, formato) para cualquier cosa hasta 64K
Como se señaló anteriormente, esta función devuelve una cadena con los bits reales en el recurso. Estos son los valores que se pueden usar para el parámetro de formato aquí:
1 recurso de cursor
2 recurso de mapa de bits
3 icono de recursos
4 recurso de menú
5 cuadro de diálogo
Recurso de 6 cuerdas
7 Recurso de directorio de fuentes
8 Recurso de fuente
9 Mesa aceleradora
10 recurso definido por el usuario
12 cursor de grupo
14 icono de grupo
Como tenemos cuatro íconos en nuestro archivo de recursos AboutVB.RES, usemos LoadResPicture (índice, formato) para asignarlos a la propiedad Picture de un CommandButton en VB 6.
Creé una aplicación con cuatro OptionButton componentes etiquetados como Tierra, Agua, Aire y Fuego y cuatro eventos de clic, uno para cada opción. Luego agregué un Botón de comando y cambió la propiedad Style a "1 - Gráfica". Esto es necesario para poder agregar un icono personalizado al CommandButton. El código para cada OptionButton (y el evento Form Load) para inicializarlo se ve así (con el Id y el Título modificados en consecuencia para los otros eventos de OptionButton Click):
Recursos personalizados
El "gran problema" con los recursos personalizados es que normalmente debe proporcionar una forma de procesarlos en el código de su programa. Como Microsoft lo declara, "esto generalmente requiere el uso de llamadas a la API de Windows". Eso es lo que haremos.
El ejemplo que usaremos es una forma rápida de cargar una matriz con una serie de valores constantes. Recuerde que el archivo de recursos está incluido en su proyecto, por lo tanto, si los valores que necesita cargar cambiar, tendrá que utilizar un enfoque más tradicional, como un archivo secuencial que abra y leer. La API de Windows que usaremos es la CopyMemory API CopyMemory copia el bloque de memoria en un bloque diferente de memoria sin tener en cuenta el tipo de datos que está almacenado allí. Esta técnica es bien conocida por VB 6'ers como una forma ultra rápida de copiar datos dentro de un programa.
Este programa es un poco más complicado porque primero tenemos que crear un archivo de recursos que contenga una serie de valores largos. Simplemente asigné valores a una matriz:
Dim largos (10) tanto tiempo
largos (1) = 123456
largos (2) = 654321
... Etcétera.
Entonces los valores se pueden escribir en un archivo llamado MyLongs.longs usando la declaración "Put" de VB 6.
Es una buena idea recordar que el archivo de recursos no cambia a menos que elimine el antiguo y agregue uno nuevo. Entonces, utilizando esta técnica, tendría que actualizar el programa para cambiar los valores. Para incluir el archivo MyLongs.longs en su programa como recurso, agréguelo a un archivo de recursos siguiendo los mismos pasos descritos anteriormente, pero haga clic en Agregar recurso personalizado ... en lugar de Agregar icono... Luego seleccione el archivo MyLongs.longs como el archivo a agregar. También debe cambiar el "Tipo" del recurso haciendo clic derecho en ese recurso, seleccionando "Propiedades" y cambiando el Tipo a "longs". Tenga en cuenta que este es el tipo de archivo de su archivo MyLongs.longs.
Para usar el archivo de recursos que ha creado para crear una nueva matriz, primero declare la llamada Win32 CopyMemory API:
Luego lea el archivo de recursos:
A continuación, mueva los datos de la matriz de bytes a una matriz de valores largos. Asigne una matriz para los valores largos utilizando el valor entero de la longitud de la cadena de bytes dividida por 4 (es decir, 4 bytes por longitud):
Ahora, esto puede parecer un gran problema cuando simplemente puede inicializar la matriz en el evento Form Load, pero demuestra cómo usar un recurso personalizado. Si tuviera un gran conjunto de constantes con las que necesitara inicializar la matriz, se ejecutaría más rápido que cualquier otro otro método que se me ocurra y no tendría que tener un archivo separado incluido con su aplicación para hacer eso.