Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: Javi SJ Cervera en 01 de Enero de 1970, 01:00:00 AM

Título: Puntero del ratón en Allegro
Publicado por: Javi SJ Cervera en 01 de Enero de 1970, 01:00:00 AM
                                ¿Hay alguna manera de que allegro utilice el puntero del ratón por defecto del sistema operativo que estemos utilizando en lugar de cambiarlo por ese puntero negro?
                               
Título: Puntero del ratón en Allegro
Publicado por: jpastor en 01 de Enero de 1970, 01:00:00 AM
                                No me acuerdo muy bien y no tengo ahora allegro para probarlo, pero creo que se puede hacer ocultando el puntero de allegro y usando el api de windows: ShowCursor (TRUE); (ref: msdn)                                
Título: Puntero del ratón en Allegro
Publicado por: Javi SJ Cervera en 01 de Enero de 1970, 01:00:00 AM
                                Bueno, más o menos me sirve, pero buscaba una solución "portable"... es k kiero k mis programas corran bajo Linux tb :sonriendo:
                               
Título: Puntero del ratón en Allegro
Publicado por: jpastor en 01 de Enero de 1970, 01:00:00 AM
                                void set_mouse_sprite(BITMAP *sprite);

Con esta funcion puedes cambiar el gráfico del puntero del ratón para usar lo que quieras.


void set_mouse_sprite_focus(int x, int y);

Si el puntero es un punto de mira por ejemplo, necesitaras estas para establecer la coordenada donde apunta.                                
Título: Puntero del ratón en Allegro
Publicado por: jpastor en 01 de Enero de 1970, 01:00:00 AM
                                Y recuerda que siempre puedes ocultar el puntero de allegro, y teniendo las coordenadas mouse_x y mouse_y puedes dibujar lo que tu quieras, un efecto de particulas, una lupa de aumento, una luz, ...                                
Título: Puntero del ratón en Allegro
Publicado por: Javi SJ Cervera en 01 de Enero de 1970, 01:00:00 AM
                                Si, pero... yo quiero que se dibuje el ratón del sistema operativo. De esta forma tendría que hacer un bitmap con el ratón de cada sistema operativo para que se dibuje el correcto, y aún así, no se podría saber si el tema de escritorio ha cambiado el puntero, etc.
                               
Título: Puntero del ratón en Allegro
Publicado por: jpastor en 01 de Enero de 1970, 01:00:00 AM
                                Pues entonces la solución está en lo primero que dije de ShowCursor(TRUE). Busca la función equivalente en cada plataforma y ya está.                                
Título: Puntero del ratón en Allegro
Publicado por: Javi SJ Cervera en 01 de Enero de 1970, 01:00:00 AM
                                Hmmm... pues no, no funciona. Al incluir me da un error. El API de Windows por lo visto define un tipo de dato BITMAP, mientras que Allegro también tiene su propio tipo de dato BITMAP, así que causa conflicto.
                               
Título: Puntero del ratón en Allegro
Publicado por: Javi SJ Cervera en 01 de Enero de 1970, 01:00:00 AM
                                Perdón, en la frase "Al incluir me da un error" debería poner "Al incluir me da un error"
                               
Título: Puntero del ratón en Allegro
Publicado por: Javi SJ Cervera en 01 de Enero de 1970, 01:00:00 AM
                                Oye, que pasa? Coño, que al incluir el "windows.h" me da error, no sé por qué el mensaje se postea mal si uso "<" ">" en vez de comillas.
                               
Título: Puntero del ratón en Allegro
Publicado por: jpastor en 01 de Enero de 1970, 01:00:00 AM
                                Para poner #include y que se postee bien tienes que desactivar el HTML en el mensaje, sino lo tomara como un tag.

Por otro lado, te da un error al incluir windows.h porque hay definiciones como BITMAP que ya están en allegro. Lo que tienes que incluir es despues de y ya te la incluye cambiando algunos tipos como BITMAP a WINDOWS_BITMAP (o algo parecido), puedes mirar esta cabecera para ver las redefiniciones.

Pero para lo que quieres hacer creo que bastaria solo con incluirla porque no necesitas usar los tipos de windows.