Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Puntero del ratón en Allegro

Iniciado por Javi SJ Cervera, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

Javi SJ Cervera

                                ¿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?
                               
== Jedive ==

jpastor

                                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: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/resources/cursors/cursorreference/cursorfunctions/showcursor.asp">msdn)                                

Javi SJ Cervera

                                Bueno, más o menos me sirve, pero buscaba una solución "portable"... es k kiero k mis programas corran bajo Linux tb :sonriendo:
                               
== Jedive ==

jpastor

                                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.                                

jpastor

                                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, ...                                

Javi SJ Cervera

                                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.
                               
== Jedive ==

jpastor

                                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á.                                

Javi SJ Cervera

                                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.
                               
== Jedive ==

Javi SJ Cervera

                                Perdón, en la frase "Al incluir me da un error" debería poner "Al incluir me da un error"
                               
== Jedive ==

Javi SJ Cervera

                                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.
                               
== Jedive ==

jpastor

                                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.                                






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.