| Ventanas de Imagen (picture
Windows) Introducción
Como se ya se describió en el capítulo "ventanas
personalizadas" el parámetro p del
comando window hace
que creemos una ventana de imagen. ¿Qué es una ventana
de imagen? Pues básicamente es lo mismo que una ventana
personalizada normal, con la diferencia de que en ésta
en vez de añadir/borrar/modificar líneas de texto, lo
que haremos sera dibujar puntos, lineas, figuras o
incluso mostrar imágenes con formato .BMP. Así
pues las picture windows no son más que tipo
especial de ventanas personalizadas, y este capítulo lo
dedicaremos integramente a estudiar su creación, manejo
y posibilidades.
Pasando ya a la práctica, un ejemplo de cómo crear una
ventana de imagen podria ser el siguente:
/window p @miventana
10 10 200 200 @miventana
Estaa línea de código hará que se cree una ventana de
imagen en blanco de nombre @miventana (recuerde que las
ventanas personalizadas siempre llevan en su nombre el
prefijo @), en las cooridnadas x (10) y (10),
de 200 pixels de largo por 200 de alto, y que además use
los menús popup que le especifiquemos bajo la clausula
menu @miventana en la seccion de
Remotes del editor del mIRC. Hasta
aquí no hacemos más que repetir lo que se explicó en
el capítulo anterior, la diferencia es que esta es una
ventana de imagen y nos permitirá aplicar tratamientos y
procesos gráficos.
Una vez creada la ventana ahora lo importante, y lo que
la diferencia del resto, son los comandos u modificadores
que podemos emplear en ella. Con los comandos que a
continuación se explicaran el lector sera capaz de
dibujar figuras, puntos, y lineas; poner texto en
cualquier lugar, y mostrar imágenes .BMP tambien
en cualquier posicion dentro de la ventana.
Antes de empezar con este tema quiero que quede claro a
qué me refiero cuando, más adelante, em`pleando la
palabra rectángulo. La especificación del
rectángulo son 4 números que determinan la posición y
tamaño de la ventana. Los dos primeros aluden a la
posición en que se encontrará su esquina superior
izquierda. El primero (x) será la distancia en pixels
desde el borde izquierdo de la pantalla, el segundo (y)
es la distancia desde el borde superior. Los dos
sigueinte números definen el tamaño de nuestra ventana:
ancho (w) y alto (h), siempre usando el pixel como unidad
de medida, por lo cual las dimensiones reales dependerán
del tamaño y definición de su monitor.
Por ejemplo un rectángulo cuya esquina esté en las
coordenadas x = 30, y = 5, y mida 100 pixels de
largo por 120 de alto lo expresaremos como: 30 5 100
120.
Espero que haya quedado eso claro porque es fundamental
para el entendimiento de la siguiente sección...
Comandos para la modificación de
Ventanas de Imagen.
Estos comandos, igual que pasaba con los de las ventanas
personalizadas normales se han de usar despues
de haber creado la ventana, y pueden ser insertados en
cualquier Alias, Popup o Remote que declaremos.
/drawdot [hnri] @nombre <color>
<tamaño> <x y> [x y ...]
Dibuja un punto del color indicado (del
0-15) con un diametro (tamaño en pixels) y en las
coordinadas x y dentro ventana de imagen.
No confundir estas coordenadas x e y con las coordenadas
equivalentes que usamos al crear la ventana, en este caso
aluden a la posición en que se dibujará el punto dentro
de la misma. Corresponden a una escala en pixels que
también parte de la esquina superior izquierda de la
ventana creada, pero cuyos ejes son ahora el borde
superior e izquierdo de la misma ( no de la pantalla
).
Es decir, que si dibujamos un punto en las coordinadas
x(0) y(0) tendremos un punto cuyo centro estara en la
misma esquina superior izquierda de la ventana de
imagen.
Se pueden especificar multiples coordenadas
x,y en la misma orden, esto es, si queremos
dibujar varios puntos con el mismo comando.
Los parametros opcionales [-hnri] sirven para lo
siguiente:
| -h |
Hará que el icono de la ventana parpadee en
el momento de dibujarse el punto si se encuentra
minimizada. |
| |
|
| -n |
Hace que la ventana no se actualice
inmediatamente. Esto podria ser util si antes de
dibujar el punto queremos cambiar el color del
fondo o algo similar, aunque realmente eso se
conseguiria mas facilmente poniendo el comando
que cambiara el color de fondo antes que el que
dibujara el punto asi que este parametro rara vez
lo usaremos... |
| |
|
| -r |
Indica que el <color> esta especificado
en formato RGB (Rojo,Verde,Azul). en caso de que
usemos este parametro tendremos que utilizar el
identificador:
$rgb(rojo,verde,azul)
por ejemplo: $rgb(0,200,100) |
| |
|
| -i |
Dibujara el punto en modo inverso (color
blanco y fondo negro). |
Ejemplo:
/drawdot r @miventana
$rgb(255,23,45) 5 10 10 12 10
Este ejemplo dibujara 2 puntos en la
ventana @miventana del color definido por el valor
$rgb(255,23,45) , con un diametro de 5 pixels.
/drawline [-hnri] @nombre <color>
<tamaño> <x y> <x y> [x y...]
Dibuja una línea del color <color>, que
tenga un grosor de <tamaño> pixels y que vaya
desde las primeras coordinadas <x y> que
especifiquemos hasta las segundas <x y>. Se pueden
especificar opcionalmente más parametros <x y>
para hacer una línea que pase por los puntos definidos.
Los parámetros [-hnri] hacen exactamente lo mismo que en
el comando drawdot, y
de hecho comprobaremos que a casi todos los comandos de
modificacion de ventanas de imagen se les pueden aplicar
estos parámetros
Ejemplo:
/drawline @miventana 4 10 20
0 20 100
Este ejemplo dibujará una linea en @miventana de color
rojo (4) y grosor 10 pixels, que irá desde las
coordenadas x(20) y(0) hasta x(20) y(100) . Es decir
será una linea vertical.
/drawrect [-hnrifec] @nombre
<color> <grosor> <x y w h> [x y w
h..]
Dibuja un rectángulo del color <color> cuyo borde
tenga un grosor de <grosor> pixels, cuya esquina
superior izquierda se encuentre en las coordinadas <x
y> especificadas, y que mida <w> pixels de largo
por <h> de alto. Lógicamente si incluimos un
segundo juego de parámetros [x y w h] creará un segundo
rectangulo con esas características. Los parámetros
[-hrni] una vez más son los mismos que los explicados en
el comando drawdot,
los otros sirven para lo siguiente:
| -f |
Una vez dibujado el rectángulo lo rellena
con el color que hayamos especificado para el
borde, si no especificamos este parámetro el
rectangulo por dentro será del color del fondo. |
| |
|
| -e |
Dibuja una elipse en lugar en un
rectángulo... ¿que como dibuja una elipse si lo
que le estamos dando son las coordenadas de un
rectangulo? Pues simplemente dibuja la elipse que
cabría perfectamente dentro de ese rectángulo
que especificamos con <x y w h>. |
| |
|
| -c |
Hace que el borde del rectangulo sea del
color que le hemos especificado, pero
transparente. |
Ejemplo:
/drawrect fr
@miventana $rgb(1,2,3) 10 30 30 200 200
Este ejemplo dibujará un rectángulo de color
$rgb(1,2,3) , ya que le hemos especificado el parámetro
r , que estará además relleno con ese color, y su
esquina superior izquierda estará en la posición x(30)
y(30) y medirá 200 pixels de largo por 200 de
alto.
/drawfill [hnris] @nombre <color1>
<color2> <x y> [archivo.bmp]
Rellenará el área en el que esté el punto <x y>
con el color <color1>. Podemos especificar que en
vez de rellenar el área con un color se haga con una
imagen BMP que tengamos. La imagen ha de ser del
tamaño 8x8 pixels, si tiene cualquier otro tamaño no
funcionará. Los parámetros [-hnri] cumplen la misma
función que en los comandos anteriores.
La funcion del parámetro <color2> depende de si
especificamos o no el parámetro [-s]. Si ponemos -s el
valor de <color2> indicará el color que deberá
ser sustituido por <color1>. Si no incluimos -s el
valor que le demos a <color2> será el color ante
el cual el relleno deberá parar.
Este comando resulta un poco complicado de explicar, asi
que lo mejor será que se fije en el siguiente
ejemplo:
Ejemplo:
/drawfill @miventana 1 4 30
30 c:\imagen.bmp
Este ejemplo lo que hará es que usando la imagen
imagen.bmp (cuyo tamaño es de 8x8 pixels) y desde la
posicion x(30) y(30) pegara multiples copias de esa
imagen para rellenar esa zona, parando ante cualquier
línea de color rojo, si hubiera alguna.
/drawtext [-hnrpboc] @nombre <color1> [color2]
[Tipo_letra] [Tamaño_letra] <x y [w h]>
<texto>
Inserta un texto del color <color> en la ventana
que especifiquemos y en las coordinadas <x y>.
Podemos añadir opcionalmente la longitud y altura del
texto (parametros [w h]), esto hará que si el texto que
escribimos es demasiado largo y no cabe en el rectángulo
que hemos indicado con [w h] aparezca solo el trozo que
quepa. El parámetro [color2] es opcional y sirve para
especificar el color del fondo del texto que escribamos.
Los parámetros [Tipo letra] y [Tamaño letra] también
son opcionales e indican el nombre del tipo de letra a
usar (escribirlo todo junto, sin espacios) y su tamaño
en puntos. [-hnr] tienen la misma funcion que en
anteriores comandos. En cuanto a los otros
parámetros:
| -p |
Nos permite el uso de controles de color
(ctrl + k) , negrita (ctrl + b) y subrayado (ctrl
+ u) dentro del texto. |
| |
|
| -b |
ndica que se va a especificar el parámetro
[color2] como color de fondo para el texto. Si no
usamos este parámetro, [color2] deberá ser
omitido. |
| |
|
| -o |
Indica que el tipo de letra elegido debe ser
en negrita. |
| |
|
| -c |
Indica que los parámetros opcionales [w h]
van a ser especificados. |
Ejemplo:
/drawtext b @miventana
4 9 MSSansSerif 14 30 40 Probando el comando
drawtext
Este ejemplo pondrá en pantalla la cadena de caracteres
Probando el comando drawtext de color rojo
(4) y sobre un fondo verde claro (9), con el tipo de
letra Ms Sans Serif (recuerde que en el comando se ha de
escrbir el nombre del tipo de letra todo junto, sin
espacios), de un tamaño 14 puntos.
/drawcopy [-ihnt] @nombre [color] <x y w h>
@destino <x y [w h]>
Copia parte de una ventana de imagen a otra parte de la
ventana o a otra ventana. Si especificamos los
parámetros [w h] la seccion de la imagen que hayamos
copiado será ensanchada/estrechada a ese tamaño (el
especificado por [w h]) en la ventana de destino.
Fíjeses que si lo que quiere es copiar un trozo de una
imagen desde una seccion de una ventana a otra sección
de la misma ventana, @nombre y @destino serán la misma
ventana. Los parámatros [-ihn] son los mismos que
explicamos en /drawdot . y en cuanto a t
indica que hemos especificado el valor [color] como un
valor $rgb equivalente al color que queremos que
sea transparente en la imagen que hayamos copiado.
Ejemplo:
/drawcopy @miventana 0 0 100
100 @miventana2 10 10
Este ejemplo copiara el contenido de la ventana
@miventana contenido desde x(0) y(0) hasta x(100) y(100)
a @miventana2 en la posicion x(10) y(10)
/drawsave @nombre <archivo.bmp>
Guarda la imagen de fondo actual de la ventana @nombre
como un archivo de nombre <archivo.bmp>
Ejemplo:
/drawsave @miventana
ventanita.bmp
Este ejemplo guaradará la imagen de fondo que tengamos
en la ventana @miventana en un fichero con el nombre
ventanita.bmp.
/drawscroll [-hn] @nombre <x> <y> <x y
w h>
Desplaza la región de la ventana comprendida en el
rectángulo <x y w h> (recuerde: x posición
x de la esquina superior izquierda, y posición y
de la esquina superior izquierza, w longitud del
rectángulo, h altitud del rectangulo, todo en
pixels) <x> pixels en el eje X y <y> pixels
en el eje Y. Los valores de <x> e <y> pueden
ser un número negativo si queremos indicar que la
región se desplaze hacia la izquierda o hacia abajo
respectivamente. [-hn] son los mismos que en el comando drawdot
Ejemplo:
/drawscroll @miventana 10 20
50 50 200 200
Este ejemplo desplazará la región de la ventana
@miventana contenida en el rectángulo 50 50 200
200 10 pixels hacia la derecha y 20 hacia
arriba
/drawpic [ihntsc] @nombre [color] <x y [w
h]> [x y w h] <archivo.bmp>
Y llegamos sin duda al comando más útil de todos los de
las ventanas de imagen, con este comando podremos cargar
una imagen cualquiera <archivo.bmp> (con formato
.bmp) en una ventana, en las coordinadas que indiquemos
<x y> . Si indicamos la longitud y altitud [w h] la
imagen sera ensanchada/estrechada a ese tamaño. El
parámetro opcional [x y w h] lo usaremos para indicar
qué parte del archivo <archivo.bmp> queremos
mostrar, útil por si tenemos un bmp grande con varias
imágenes y queremos mostrar solo una de ellas. [-ihn]
corresponden a los parámetros explicados en drawdot. Otros parámetros
que acepta este cmando son:
| -t |
Indica que hemos especificado el valor
[color] con el fomato $rgb(N,N,N) donde N es un
numero comprendido entre 0 y 255, y ese color
será tratado como transparente en el archivo que
queramos mostrar. |
| |
|
| -s |
Indica que hemos especificado los parámetros
[w h] para ensachar/estrechar la imagen. |
| |
|
| -c |
Indica que la imagen debe ser puesta en la
memoria caché, esto hace que si en la misma
sesión quisieramos volver a hacer uso de esa
imagen, el tiempo de carga sería muy inferior.
La caché puede almacenar hasta un máximo de 30
imágenes, a partir de ese número empezaran a
reemplazarse las que lleven más tiempo sin
usarse por las más nuevas. |
Ejemplo:
/drawpic t @miventana
$rgb(0,0,0) 0 0 c:\ventanita.bmp
Este ejemplo mostrará la imagen c:\ventanita.bmp en la
ventana @miventana en las coordinadas x(0) y(0) y las
regiones de la imagen de color $rgb(0,0,0) (negro en este
caso) se mostrarán como transparentes (se verá el fondo
de la ventana a través de esas regiones).
Con esto acabamos con los comandos para la modificación
de ventanas de imagen. Como habrá podido comprobar el
dominio de las coordenadas x e y es imprescindible, y
también la unidad de medida de tamaño de cualquier
gráfico por ordenador, el pixel, para especificar los
tamaños de las figuras y/o imágenes. Esto sólo se
consigue mediante práctica, y los que anteriormente
hayan usado un programa de diseño gráfico como Corel
Draw o Photoshop ya tendrán algo de camino
andado en este tema. Seguidamente veremos los
identificadores que nos devolverán información
específica de una ventana de imagen.
Identificadores de Ventanas de
Imagen
$mouse.<propiedad>
$mouse.win : Devuelve el nombre de la ventana sobre la
que se encuentra el raton.
$mouse.x : Devuelve la posicion x , relativa a la ventana
de imagen, del raton.
$mouse.y : Devuelve la posicion y , relativa a la ventana
de imagen, del raton.
$mouse.mx : Devuelve la posicion x relativa a la ventana
principal del mIRC.
$mouse.my : Devuelve la posicion y relativa a la ventana
principal del mIRC.
$mouse.dx : Devuelve la posicion x relativa al
escritorio.
$mouse.dy : Devuelve la posicion y relativa al
escritorio.
$rgb(nº,nº,nº)
Este identificador ya lo hemos usado en la explicación
de los comandos, y sirve para especificar un color, pero
con más detalle. Es decir que en vez de usar el color
con un número del 0 al 15, los indicaremos suministrando
los valores de rojo, verde y azul del color(RGB). Si no
controlas el RGB no te preocupes siempre puedes poner el
color el el formato habitual (numero del 0 al 15).
$getdot(@nombre,x,y)
Devuelve el valor RGB del color del punto definido por
los parámetros x e y .
$inrect(x,y,x2,y2,w,h)
Devuelve $true si el punto definido por x,y esta
dentro del rectángulo definido por x2,y2,w,h . En caso
contrario devuelve el valor $false.
$height(texto,tipo_letra,tamaño)
Devuelve la altura en pixels del texto especificado y con
un tipo de letra y tamaño. Recuerda que el tipo de letra
lo haa de escribir todo junto, por ejemplo:
TimesNewRoman.
$pic(archivo.bmp)
Este identificador se puede usar de 3 formas:
$pic(archivo.bmp).size : Devuelve el tamaño del .BMP
especificado.
$pic(archivo.bmp).height : Devuelve el tamaño del .BMP
especificado.
$pic(archivo.bmp).width : Devuelve el tamaño del .BMP
especificado.
$width(texto,tipo_letra,tamaño,B,C)
Devuelve la longitud en pixels del texto especificado y
con un tipo de letra y tamaño. Si el parámetro
B es diferente de 0 se tomará el
tipo de letra en negrita. Si el parámetro C
es diferente de 0 se ignorarán el espacio
ocupado por los controles de color, negrita y
subrayado.
Eventos y remotes en las ventanas de
imagen
Con las ventanas de imagen podemos usar los mismo eventos
y manejo de remotes que empleabamos en el resto de
ventanas personalizadas, como por ejemplo el evento ON
INPUT (si la ventana contaba con una editbox) o los
eventos ON OPEN y ON CLOSE que se
ejecutaban cuando abriamos o cerrábamos la ventana en
cuestión.
En lo que se refiere a ventanas de imagen, no existe
ningún evento remoto para ellas en especial, seguiremos
usando por tanto los ya vistos en el capítulo anterior,
pero eso sí, a la hora de definir menús Popup dentro de
la sección Remotes para una ventana de imagen, sí que
podrá incluir nuevas funciones que ayudarán a sus
ventanas a ser un poco más útiles y sofisticadas.
Por ejemplo, usted podrá hacer que al pulsar en cierta
región de una imagen pase una cosa, y al pulsar en otra
región pase otra cosa. Vayamos por partes, como he dicho
antes la nueva funcionalidad de las ventanas de imagen se
implementará donde en las ventanas personalizadas
normales implementábamos el menu Popup. Por ejemplo si
creamos la siguiente ventana:
/window p @otraventana
100 100 100 100 @otraventana
Y queremos definir su menu popup, escribiremos en la
sección Remotes:
menu @otraventana {
}
Y aquí empiezan los cambios. Por supuesto, es
perfectamente posible especificar el menú popup que
queremos para esa ventana dentro de los corchetes pero
eso deberá ser puesto al final. Y me
explico: antes de escribir el menú popup podremos
incluir una serie de "gatillos" que saltarán
cuando ocurra cierto evento. A continueación se detallan
cuales son estos gatillos que usted podrá
especificar dentro de la clausula menu
@otraventana:
mouse: Saltará cuando el ratón se mueva por
encima de la ventana.
sclick: Saltará cuando el usuario haga click con
el botón izquierdo sobre la ventana.
dclick: Saltará cuando el usuario haga click con
el botón derecho sobre la ventana.
uclick: Saltará cuando el usuario suelte el
botón izquierdo del ratón.
lbclick: Saltará cuando se haga un click sobre un
objeto de una listbox.
leave: Saltará cuando el ratón salga de a
ventana (se mueva fuera de la ventana). Cuando usemos
este gatillo, podemos usar el identificador $leftwin que
nos devolverá el nombre de la ventana de la que salió
el ratón.
drop: Saltará cuando el usuario haga click con
botón izquierdo sobre la ventana, mantenga el botón
pulsado, mueva el ratón y después lo suelte otro
lugar.
Antes de liarle más, le presentaré un ejemplo de cómo
podría usar estos gatillos para que le quede un poco mas
claro:
menu @otraventana {
mouse: /echo s El ratón
se ha movido hasta $mouse.x $mouse.y
sclick: /echo s Ha hecho
click en las coordenadas $mouse.x , $mouse.y
dclick: /echo s Ha hecho
doble click sobre las coordenadas $mouse.x ,
$mouse.y
uclick: /echo s Ha soltado el
boton en las coordenadas $mouse.x , $mouse.y
leave:{
- echo s Ha salido de
la ventana $leftwin
window c
$leftwin
}
Popup 1
.sub-popup1: /comando1
.sub-popup2: /comando2
Popup2: /comando3
-
Popup3: /comando4
}
Ahora fíjese bien en el código que acaba de leer. Hay
unas cosas importantes que deberían de quedar claras con
ese ejemplo:
- Como ha visto los gatillos de una ventana de
imagen se especifican dentro de la clausula
menu @otraventana y siempre ANTES que
el menu popup.
- El menu popup de la ventana se especifica,
normalmente, de la misma forma que en las
ventanas personalizadas normales (después de los
"gatillos").
- Se puede hacer uso de los identificadores $mouse.x
y $mouse.y para hallar las coordenadas en
las que se encuentra situado el ratón (siempre
relativas a la ventana de imagem).
- Se pueden incluir varios comandos para un mismo
gatillo usando llaves { } como hemos hecho en el
ejemplo del gatillo leave.
Aunque le parezca increíble, con lo que se ha
explicado hasta ahora ya se puede hacer cualquier cosa
que haya visto en cualquier script que tenga que ver con
ventanas de imagen. El uso de estas ventanas no es
sencillo, y se hace verdaderamente muy pesado, así que
sería conveniente que el lector se asegurará de si en
realidad va a valer la pena el hacer una ventana de
imagen para algo que quizás un simple menu popup podría
solucionar. De cualquier forma a continuación se va a
exponer y explicar un ejemplo que aunque tenga una escasa
utilidad servirá para que pueda ver todos estos comandos
e identificadores en acción. En este ejemplo se da por
hecho que los conocimientos del lector sobre Aliases,
Remotes y popups son suficientes.
Ejemplo 1: Crear una imagen interactiva
Para ello necesitaremos, primeramente, una imagen,
usaremos la siguiente:
Esta en concreto tiene unas dimensiones de 100x73 pixels,
este valor nos será util más adelante, se supondrá que
la imagen se encuentra en c:\pregunta.bmp. Si lo desea
puede bajarla en formato BMP desde aquí.
Ahora, como ya habrá adivinado, lo que haremos será
transformar esa imagen en una ventana de imagen, y hacer
que si el usuario pulsa el ratón sobre SI,
se cierre el mIRC y, si por el contrario, pulsa sobre
NO, se cierre la ventana de imagen y que no
ocurra nada más. Por lo tanto lo primero será crear un
ALIAS que abra la ventana de imagen y cargue en ella
pregunta.bmp. Copiaremos lo siguente en la sección
Aliases del editor del mIRC:
/pregunta {
set %longitud
$pic(c:\pregunta.bmp).width
set %altitud
$pic(c:\pregunta.bmp).height
/window p +b @pregunta 200
200 %longitud %altitud @pregunta
drawpic c @pregunta 0 0
c:\pregunta.bmp
}
Hasta aquí lo que hemos hecho es sencillo, declaramos el
alias /pregunta. Y lo que hará ese alias es
guardar la longitud en pixels del la imagen en la
variable %longitud , después guardará la altitud en
pixels de la imagen en la variable %altitud. Seguidamente
se declara la ventana de imagen @pregunta, usando el
parámetro +b para que no tenga barra de título
ni botones de minimizar, maximizar y cerrar. Hemos usado
las variables %altitud y %longitud para que la ventana
sea exactamente del mismo tamaño que la imagen, de esa
forma esta ocupará toda la ventana y quedará bien (sin
ningun espacio en blanco).
Despues mediante el comando drawpic
hemos cargado la imagen en la ventana que hemos creado y
hemos metido esa imagen en la cache (mediante el [-c] )
para que si la volvieramos a utilizar en la misma sesion
se cargara más rapidamente.
Ahora iremos a los remotes para definir el
menu @pregunta y el gatillo que hará que
cuando hagamos un click sobre SI, se cierre
el mIRC, y que cuando hagamos un click sobre
NO, se cierre la ventana. Copie lo siguiente
en los Remotes:
menu @pregunta {
sclick:{
}
Información de la imagen
.¿Cuánto ocupa?: /echo s La
imagen ocupa $pic(c:\pregunta.bmp).size bytes
-
Cerrar ventana: /window c
@pregunta
}
Esta es la sección más interesante del código, y aquí
se ha mostrado como se hará siempre que queramos hacer
que ocurran cosas diferentes según en qué la región
pulsemos de una imagen. Para ello se ha recurrido al
gatillo sclick que como se explicó
antes salta cuando el usuario hace un simple click sobre
la ventana. Lo que pasará en este caso es que el
script comprobará donde ha hecho el click, y dependiendo
de donde sea, ejecutará unos comandos u otros. Pero al mIRC
no le podemos decir si el usuario clickea sobre el
SI haz esto y lo otro, al mIRC le tendremos
que decir si el usuario hace click en el rectangulo
x y w h , entonces ejecuta estos comandos.
Y eso hemos hecho, primero hemos abierto la imagen en un
programa de diseño, el Paint de Windows basta, y
moviendo el ratón sobre la imagen nos aparece en la
esquina inferior derecha del programa las coordenadas por
las que estamos moviendo el raton, así pues apuntamos
las coordenadas que definen el rectangulo que contiene a
la palabra SI. En este caso el rectangulo
tendria su esquina superior izquierda en x(49) y(46) y su
esquina inferior derecha en x(73) y(78) . Entonces le
hemos dicho al mIRC: si cuando el usuario
hace click el raton esta entre las coornidadas x(49) y
x(73) y además esta entre las coordinadas y(46) e
y(78) eso necesriamente significa que el usuario ha
hecho click sobre la palabra SI y por lo
tanto ejecutaremos el comando exit
, que cierra el mIRC, no hace falta que le digamos
antes que cierre la ventana de imagen puesto que al
cerrarse el mIRC se cierran automaticamente todas
las ventanas que haya creadas. Análogamente se ha
seguido el mismo procedimiento para detectar si el
usuario hace click sobre NO, y en tal caso
hacemos que se cierre la ventana de imagen y que no pase
nada más. Por último le hemos dicho que si el click no
se produce ni sobre la palabra SI ni sobre la
palabra NO que nos salga un mensaje en la
ventana de status indicándonos donde tenemos que pulsar.
Visto eso, el resto es sencillamente el menú que
aparecerá al pulsar boton derecho sobre la ventana, que
se especifica, como ya sabe, despues de el/los gatillos
que hayamos empleado.
Hasta aquí este tutorial de ventanas personalizadas. Soy
consciente de que al principio parecen muy complicadas,
pero en realidad no lo son tanto, lo que sí son es muy
pesadas de crear , por eso se recomienda que se usen
sólo cuando sea estrictamente necesario, ya que la mayor
parte de las veces se podría llevar a cabo la misma
tarea, y de una forma más cómoda mediante popups. De
cualquier forma, se han comentado con detalles todas las
posibilidades de las ventanas personalizadas y de imagen
para que también el lector ya experto les pueda sacar el
máximo provecho.
Este documento ha sido creado por TeMpEsT.
Para cualquier duda o sugerencia, mandar un e-mail a tempest@mixmail.com
|