SCRIPTING
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.
<---Atrás
|
 |
 |
 |
|