kalux Master


Registrado: 21 Nov 2003Mensajes: 313Ubicación: Alicante - España
|
Publicado: Dom 01 Feb, 2004 2:47 pm Asunto: Archivos de recursos (*.RC) |
|
|
Iva a contestar a un compañero nuestro que preguntaba sobre los ficheros de recursos, pero considero que esta contestacion podria ir mejor en esta seccion.
La he sacado de un pequeño memorandum que tengo, que a su vez esta sacado del libro "C++Builder" de "Gerad Leblanc". Un libro "basico" que que contiene cosas muy interesantes que no aparecen en otros.
ARCHIVOS DE RECURSOS
Un archivo de recursos es un fichero el cual contendrá a otros archivos, tales como imágenes, iconos, cursores, etc.
El motivo de estos archivos es el no tener que distribuirlos junto con la aplicación, ya que se incluyen dentro del fichero EXE.
Lo primero que debemos hacer para que forme parte del fichero de recursos es preparar un archivo de texto (File -> New y clic sobre el icono Text).
Este debe contener la línea siguiente:
nombre_interno tipo_recurso nombre_del_archivo
Donde:
nombre_interno : es el nombre que se especificará en el archivo CPP para designar la imagen.
tipo_recurso : es una palabra reservada. Esta palabra puede ser:
BITMAP : para imágenes.
ICON : para iconos.
CURSOR : para cursores.
nombre_del_archivo es el nombre del archivo de imagen (no es necesario dar el nombre completo del archivo si este archivo se encuentra en el directorio del proyecto).
Por ejemplo:
| Código: |
imagen1 BITMAP c:\imágenes\yo.bmp
micursor CURSOR c:\cursores\cursor1.cur
alarma ICON c:\iconos\alarm.ico
|
Este archivo de texto debe ser:
•guardado con la extensión RC. Asigne a este archivo un nombre distinto al del proyecto (para que no haya confusión con el archivo de recursos ya existente y que tiene la extensión RES);
•inclúyalo en el proyecto de la aplicación: View -> Project manager y añádalo al proyecto.
BMP:
Los pasos a seguir para una imagen son:
Crear el fichero de recurso (*.RC). Indicando donde se encuentra la imagen.
Declare como variable global (al principio del archivo CPP, antes del primer método):
Donde :
HBITMAP es una palabra reservada.
hbitmap sera como le llamaremos en la aplicación (puede ser cualquier nombre).
Para cargar la imagen, insertaremos la siguiente linea:
| Código: |
hBitmap = LoadBitmap (HINSTANCE) Hinstance, "nombre_interno");
|
donde nombre_interno debe reemplazarse por el nombre interno que haya dado a la imagen ( a la izquierda de la palabra reservada BITMAP).
Ejemplo:
En el fichero de recurso:
| Código: |
fondo_malva BITMAP d:\fondos\malva.bmp
|
Como variable global:
Y cuando queremos cambiar la imagen:
| Código: |
f_malva = LoadBitmap((HINSTANCE)HInstance,"fondo_malva");
i_fondo->Picture->Bitmap->Handle=f_malva;
|
ICONO
Para el icono actuaremos de modo similar a de la imagen:
Declare como variable global (al principio del archivo CPP, antes del primer método):
Donde :
HICON es una palabra reservada.
hicon será como le llamaremos en la aplicación (puede ser cualquier nombre).
Para cargar el icono, insertaremos la siguiente linea:
| Código: |
hicon = LoadIcon (HINSTANCE) Hinstance, "nombre_interno");
|
donde nombre_interno debe reemplazarse por el nombre interno que haya dado a la imagen ( a la izquierda de la palabra reservada ICON).
Ejemplo:
En el fichero de recurso:
| Código: |
alarma ICON d:\iconos\alarm.ico
|
Como variable global:
Y cuando queremos cambiar la imagen:
| Código: |
otroicon = LoadIcon((HINSTANCE)HInstance,"alarma");
|
Para cambiar el icono de la ventana y el de la aplicación:
| Código: |
Form1->Icon->Handle=otroicono;
Application->Icon->Handle=otroicono;
|
Siendo Form1 el nombre de la ventana
CURSOR
Para los cursores actuaremos de manera parecida:
Primero crear el fichero de recurso (*.RC). Indicando donde se encuentra el cursor.
Para cargar el icono, insertaremos la siguiente linea:
| Código: |
Screen->Cursors[30]=LoadCursor(HINSTANCE)Hinstance, “nombre_interno”);
|
donde nombre_interno debe reemplazarse por el nombre interno que haya dado a la al cursor ( a la izquierda de la palabra reservada CURSOR).
¿ Y porque 30 ?. Porque se necesitan una veintena de cursores predefinidos. Si se decide cargar mas cursores, hay que incluirlos en el archivo de recursos y seleccionar valores sucesivos superiores a 30.
Para forzar la utilización de un cursor, ejecute:
creen->Cursor=”posición del cursor”
Ejemplo:
En el archivo de recursos:
| Código: |
alarma ICON c:\iconos\alarm.ico
|
En el programa
| Código: |
Screen->Cursors[30]= LoadCursor((HINSTANCE)HInstance,"alarma");
Screen->Cursor=30;
|
|
|