Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





a vueltas con el raton y directinput

Iniciado por capitan_kirk, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

capitan_kirk

                                Bueno , sigo con mis problemas con el ratón , a ver si alguien sabe como se hace esto.

Tengo una aplicación que estoy haciendo que es en modo ventana con directx y lo que intento es capturar la posición del raton cuando pasa por encima. El problema está en que al capturar el dispositivo raton desde la aplicacion con directinput me resetea su posición a las coordenadas 0,0 de la ventana que no se corresponede con la posición real del raton en pantalla. Por eso necesito algun método para conseguir las coordenadas absolutas en pantalla del ratón.

Es de vida o muerte , sinó el jefe me empapela!!!!!                                

mICrO

                                Mirate estas funcions del api

ScreenToClient
http://msdn.microsoft.com/library/default....rdspac_5oxg.asp


ClientToScreen
http://msdn.microsoft.com/library/default....rdspac_2tny.asp

mICrO

Citar
El 2002-05-30 09:22, capitan_kirk escribió:
Bueno , sigo con mis problemas con el ratón , a ver si alguien sabe como se hace esto.

Tengo una aplicación que estoy haciendo que es en modo ventana con directx y lo que intento es capturar la posición del raton cuando pasa por encima. El problema está en que al capturar el dispositivo raton desde la aplicacion con directinput me resetea su posición a las coordenadas 0,0 de la ventana que no se corresponede con la posición real del raton en pantalla. Por eso necesito algun método para conseguir las coordenadas absolutas en pantalla del ratón.

Es de vida o muerte , sinó el jefe me empapela!!!!!
ICrO : log off

capitan_kirk

                                Efectivamente las funciones que comentas son muy utiles , pero necesito una para saber las coordenadas absolutas del ratón, es decir que me de las coordenadas de este tanto si está dentro o fuera de mi ventana , y en caso de que esté dentro de mi ventana , entonces ya no hay problema.

si alguien tiene la respuesta a esto , junto con las funciones que comenta MiCro , me habeis hecho padre!!!!                                

mICrO

                                Para hacer eso tienes que "capturar" el raton, asi cuando se mueva aunque no este en tu ventana tendras esa informacion.

Un ejemplo de esto, es coger photoshop y abrirlo (sin maximizar), seleccionar seleccion y luego pinchar y mover el raton por fuera de la ventana del photoshop, veras como sigue capturado.

Para eso hay 2 funciones del api
SetCapture
http://msdn.microsoft.com/library/default....usinpt_4fol.asp

ReleaseCapture
http://msdn.microsoft.com/library/default....usinpt_7asl.asp

Un codigo habitual para esto, seria algo asi.....

   void CGestorImagenesFrame::OnLButtonDown(UINT nFlags, CPoint point)
      {
      //de esta forma se puede mover el area de seleccion
      //incluso aunque el cursor este fuera de la ventana
      //explorer like
      SetCapture();
................
}

   void CGestorImagenesFrame::OnLButtonUp(UINT nFlags, CPoint point)
      {
      //ya no necesitamos capturar el raton
      ReleaseCapture();
}

mICrO
Citar
El 2002-05-30 12:17, capitan_kirk escribió:
Efectivamente las funciones que comentas son muy utiles , pero necesito una para saber las coordenadas absolutas del ratón, es decir que me de las coordenadas de este tanto si está dentro o fuera de mi ventana , y en caso de que esté dentro de mi ventana , entonces ya no hay problema.

si alguien tiene la respuesta a esto , junto con las funciones que comenta MiCro , me habeis hecho padre!!!!
ICrO : log off

sés

                                Mira GetCursorPos(), creo que era esa ^_^
Te da la posición del ratón.                                
Soy indeciso... ¿o no?

MChiz

                                Hola!
SetCapture y ReleaseCapture funcionan a la perfeccion y son muy sencillas de utilizar.
Un saludo!!

< MChiz >                                






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.