Después de que los estudiantes de Visual Basic aprendan todo sobre bucles y declaraciones condicionales y subrutinas, etc., una de las siguientes cosas que a menudo preguntan es: "¿Cómo agrego un mapa de bits, un archivo wav, un cursor personalizado u otro efecto especial? " Una respuesta es archivos de recursos. Cuando agrega un archivo usando los archivos de recursos de Visual Studio, se integran directamente en su proyecto de Visual Basic para una velocidad de ejecución máxima y un empaquetado mínimo de problemas y la implementación de su aplicación.
Los archivos de recursos están disponibles tanto en VB 6 como en 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.
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. Así que 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. Tendrá que confirmar la creación del archivo en una ventana de verificación, y se creará un archivo "AboutVB.RES" y se completará en el Editor de recursos.
VB6 admite lo siguiente:
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, podría 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 úselos 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 automáticamente (101, 102, 103 y 104).
Para usar los íconos en un programa, usamos una función VB 6 "Load Resource". Hay varias de estas funciones para elegir:
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.
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 OptionButton Click):
Private Sub Option1_Click ()
El "gran problema" con los recursos personalizados es que normalmente debe proporcionar una forma de procesarlos en el código de su programa. Como dice Microsoft, "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 que si los valores que necesita cargar cambian, deberá usar un enfoque más tradicional, como un archivo secuencial que abra y lea. 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 utilizando la declaración "Put" de VB 6.
Dim hFile As Long
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 Añadir 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:
Private Declare Sub CopyMemory _
Luego lea el archivo de recursos:
Dim bytes () como byte
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):
ReDim longs (1 a (UBound (bytes)) \ 4) como largo
Ahora, esto puede parecer un gran problema cuando podría simplemente inicializar la matriz en el evento de carga de formulario, 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 método que se me ocurra y no tendría que tener un archivo separado incluido con su aplicación para hacerlo..