struct CDIV_MOUSE{ int x, y, // Coordenadas graph, // Código del gráfico file, // Código del fichero z, // Plano de profundidad angle, // Ángulo size, // Tamaño (%) flags, // Indicador espejados region; // Región de corte char left, middle, right, // Estado botones cursor, // Emulación con cursores speed; // Velocidad del ratón };
struct CDIV_MOUSE mouse;
Esta estructura global sirve para controlar el ratón; contiene una serie de campos relacionados con la programación de este dispositivo, como la posición en pantalla, el gráfico del puntero, el estado de los botones, etc.
Para acceder a estos campos se debe preceder el nombre del campo por la palabra mouse y el símbolo . (punto); por ejemplo, para acceder al campo x (coordenada horizontal del puntero del ratón) se debe utilizar mouse.x.
x, y - Coordenadas horizontal y vertical del ratón. Estos dos campos (mouse.x y mouse.y) serán los únicos que necesariamente habrá que leer para conocer la posición en pantalla del cursor del ratón.
Para posicionar el ratón en otras coordenadas (forzar su posición), bastará con asignar las nuevas coordenadas a estos dos campos.
graph - Código del gráfico asignado como puntero del ratón. Por defecto el ratón no será visible; para hacerlo visible se debe crear el gráfico que va a servir de puntero en el editor gráfico, cargarlo en el programa (con la función load_fpg(), load_map() o load_pcx(), según se haya guardado este gráfico en un fichero FPG o en un archivo MAP/PCX), y asignar su código de gráfico a esta variable (mouse.graph). Entonces se hará visible el puntero del ratón en pantalla.
En las coordenadas mouse.x, mouse.y aparecerá el centro del gráfico, a no ser que se haya definido el punto de control número 0 del mismo en el editor gráfico. Si se define este punto, comúnmente denominado "punto caliente del ratón" (hot spot), será él mismo el que aparezca en las coordenadas indicadas en los campos mouse.x e mouse.y.
Por ejemplo, si se crea como dibujo para el puntero del ratón la típica flecha (como el puntero de ratón DIV Games Studio), el "punto caliente" (punto de control número 0) se definiría en la esquina superior izquierda del gráfico, pues éste es el punto activo dentro del gráfico. Entonces, cuando el ratón estuviera, por ejemplo, en las coordenadas (0, 0), sería la precisamente la "punta de la flecha" la que se situara en dichas coordenadas.
file - Código del fichero que contiene el gráfico. En este campo se define el código de fichero que contiene el gráfico del puntero del ratón. No es necesario indicar aquí un valor si el gráfico se cargó de un archivo MAP o PCX, o si está en el primer archivo FPG cargado en el programa. En caso contrario, se deberá asignar a mouse.file el código de fichero que retornó la función load_fpg() al cargar el fichero que contiene el gráfico del puntero del ratón.
z - Prioridad de impresión del gráfico. Indica en qué plano de profundidad debe pintarse el gráfico del puntero del ratón. Por defecto este campo valdrá -512, lo que implica que el puntero se verá por encima del resto de gráficos y textos. Cuanto mayor sea este campo, más al fondo se situará el puntero del ratón.
Si se quisiera que un gráfico de un proceso apareciera por encima del puntero del ratón, bastaría con asignar a la variable local z de dicho proceso un número entero menor de -512, por ejemplo -600.
angle - ángulo con el que se verá el gráfico del puntero del ratón. El valor de mouse.angle por defecto es 0, lo que implica que no se verá rotado este gráfico, a no ser que se asigne un nuevo ángulo a este campo.
Se recuerda que los ángulos se deben especificar en milésimas de grado, por ejemplo, la sentencia mouse.angle=90000; hará que el puntero aparezca rotado 90 grados (ver el uso de ángulos en el lenguaje).
size - Tamaño del gráfico en porcentaje. Por defecto, este campo valdrá 100 (el gráfico se verá al 100% de su tamaño), y no es necesario indicar aquí otro valor a no ser que se quiera que el gráfico se escale (se vea ampliado o reducido).
Si por ejemplo se quisiera que el gráfico apareciera el doble de grande que su tamaño original (al 200%), se debería utilizar la sentencia mouse.size=200;.
flags - En este campo se indicarán diferentes valores cuando se pretenda que el gráfico del ratón aparezca espejado (invertido
horizontal o verticalmente), o se quiera visualizarlo como un gráfico (semi) transparente. Los posibles valores asignables a la variable mouse.flags son:
0 - Gráfico normal (valor por defecto). 1 - Espejado horizontal. 2 - Espejado vertical. 3 - Espejado horizontal y vertical (180ø).
region - Región de corte del gráfico. A este campo se debe asignar un valor únicamente cuando se quiera que el puntero del ratón sea visible sólo dentro de una región (una zona rectangular de la pantalla); para conseguirlo se debe, primero, definir esta región con la función define_region() y, después, asignar a este campo (mouse.region) el número de la región que se ha definido.
Por defecto este valor será 0, que es el número de región que se refiere a la pantalla completa, por lo que el gráfico será visible
en toda la pantalla.
left, middle y right - Estos tres campos almacenan valores lógicos (0 o 1) según los botones del ratón estén pulsados o no (se corresponden con los botones izquierdo, central y derecho del ratón). Normalmente, se activan únicamente dos botones del ratón (left y right) ignorándose el estado del botón central. Esto depende del driver (dispositivo de control) del ratón que esté instalado en el ordenador.
Por ejemplo, para realizar en un programa una acción cuando se pulse el botón izquierdo del ratón (mouse.left) se debe incluir en el código una sentencia como la siguiente:
if (mouse.left){ // Acción a realizar (sentencias)
}
cursor - Indica si está activa la emulación del ratón con las teclas de los Cursores y Enter; cuando esta emulación esté activada, se podrá mover el puntero tanto con el ratón como con los cursores. Por defecto, esta emulación estará desactivada (mouse.cursor=0;) a no ser que el programa no pueda detectar un ratón conectado al sistema, en cuyo caso se activará la emulación automáticamente (es decir, si mouse.cursor vale 1 al inicio del programa, es que no hay un ratón conectado en el equipo).
speed - Al igual que en el entorno, ahora se puede regular la velocidad de desplazamiento del puntero del ratón en los programas. Este es un valor entre 0 (velocidad máxima) y 9 (mínima), por defecto mouse.speed valdrá 2.
Ver: Datos globales