Foros del Web » Programación para mayores de 30 ;) » .NET »

Capturar raton [Ayudaa]

Estas en el tema de Capturar raton [Ayudaa] en el foro de .NET en Foros del Web. hola gente. Pues soy nuevo en el foro y quería plantear un problema que tengo, el cual veo muy complicado. Pues el temas es que ...
  #1 (permalink)  
Antiguo 19/05/2011, 19:45
Avatar de joj9  
Fecha de Ingreso: marzo-2010
Mensajes: 24
Antigüedad: 14 años
Puntos: 0
Capturar raton [Ayudaa]

hola gente. Pues soy nuevo en el foro y quería plantear un problema que tengo, el cual veo muy complicado.
Pues el temas es que he conseguido hacer un programilla que me agrega un juego dentro de mi formulario. El juego lo ejecuto en modo ventana y consigo que me lo meta a mi formulario y lo coloque bien alineado y ajustado al formulario.
El problema viene cuando la ventana del juego no me captura el raton para poderme moverme en el juego, es decir cuando la ventana del juego esta fuera de mi formulario cuando pincho en ella me captura el raton para que no pueda salirse de ella y manejar el juego, pero cuando tengo la ventana de juego dentro de mi formulario no me captura el raton y no puedo moverme en el juego.

Alguien sabría de alguna api o algo que pueda capturar el raton, para así poder bindear una tecla o algo desde la cual permito que lo capture o lo suelte.

Muchas gracias de antemano y a ver si pueden hecharme una mano, gracias!
  #2 (permalink)  
Antiguo 20/05/2011, 02:35
Avatar de bieres  
Fecha de Ingreso: marzo-2011
Mensajes: 63
Antigüedad: 13 años, 1 mes
Puntos: 5
Respuesta: Capturar raton [Ayudaa]

Hola joj9, no queda muy claro cual es tu problema.

Puedes usar la API de windows:
Código:
[System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "GetCursorPos")]
static internal extern bool GetCursorPos(out System.Drawing.Point lpPoint);

[System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "SetCursorPos")]
static internal extern Int32 SetCursorPos(Int32 x, Int32 y);
O tambien usar en cualquier evento Click:
Código:
private void contenedor_Click(object sender, MouseEventArgs e)
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Right)
            { 
                //System.Windows.Forms.MouseButtons.Right;
                //System.Windows.Forms.MouseButtons.Middle;
                //System.Windows.Forms.MouseButtons.None;
                //System.Windows.Forms.MouseButtons.Right;
                //System.Windows.Forms.MouseButtons.XButton1;
                //System.Windows.Forms.MouseButtons.XButton2;
            }
            //e.Location;
            //e.X;
            //e.Y;
        }
  #3 (permalink)  
Antiguo 20/05/2011, 08:30
Avatar de joj9  
Fecha de Ingreso: marzo-2010
Mensajes: 24
Antigüedad: 14 años
Puntos: 0
Respuesta: Capturar raton [Ayudaa]

Pero no es que yo deba controlar el movimiento del raton o restringirlo desde mi aplicación sino que debo conseguir que la ventana del juego introducido en mi formulario (mediante SetParent) lo atrape el mismo, como hace en condiciones normales cuando esta fuera de mi formulario.
  #4 (permalink)  
Antiguo 20/05/2011, 10:24
Avatar de joj9  
Fecha de Ingreso: marzo-2010
Mensajes: 24
Antigüedad: 14 años
Puntos: 0
Respuesta: Capturar raton [Ayudaa]

Pues finalmente he hecho algo mas facil pero que me sirve perfectamente, puesto que lo que pedía en el post inicial me parecía muy complicado ya que tenía que incidir en el comportamiento del form externo (juego) y me parecía bastante complicado.
He colocado en mi form un panel que lo he hecho transparente con "TransparencyKey" y justo en el hueco transparente hago que esté siempre colocado el form del juego y aunque yo mueva mi ventana siempre estará colocado en esa posición con "MoveWindow". Y para que quede bien ajustado le he quitado los bordes a la ventana del juego con "SetWindowLong".

No es lo mismo pero cumple bien las funciones ya que en todo momento tengo controlada la ventana del juego dentro de mi form, aunque solo sea aparentemente :)

Etiquetas: raton, visual
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:38.