Arrastre de Forms

19/08/2004 - 02:02 por Pablo Cedeno | Informe spam
Hola a todos,

Tengo un problema y espero que por aquI me puedan dar una luz.
Estoy trabajando con forms, pero necesito que estos no se puedan mover de su
posiciOn original. He tratado de maximizar el form pero igual puedo
arrastrar la ventana. Buscando encontrE que se puede sobreescribir el mEtodo
WndProc, pero no he podido dar con lo que busco. hay varios mensajes que el
SO retorna en el caso en que arrastre la ventana, pero hasta ahora no he
podido detener el evento de mover la ventana. TratE tambiEn con los
diferentes tipos de bordes pero nada me ha funcionado.
Talvez estoy complicando las cosas, pero por el momento creo que he tratado
con lo que se me ha ocurrido desde lo mAs sencillo hasta hacer el override
del metodo WndProc.

El efecto que quiero es por ejemplo cuando tengo una ventana del IE
maximizada que no puedo arrastrar la ventana. La aplicaciOn que estoy
creando tiene una ventana principal maximizada pero no he logrado que se
quede en esa posiciOn.

Si alguien me puede ayudar se lo agradecerIa.
Saludos.

Preguntas similare

Leer las respuestas

#1 Guillermo guille
19/08/2004 - 04:27 | Informe spam
hola,

¿has probado interceptando el evento LocationChanged?


Nos vemos.
Guillermo
Microsoft VB MVP desde 1997
Te invito a mi sitio dedicado al VB y más...
http://www.elguille.info/
http://www.mundoprogramacion.com/
(puede que el correo usado sea anti-spam)


"Pablo Cedeno" wrote in message
news:
Hola a todos,

Tengo un problema y espero que por aquI me puedan dar una luz.
Estoy trabajando con forms, pero necesito que estos no se puedan mover de su
posiciOn original. He tratado de maximizar el form pero igual puedo
arrastrar la ventana. Buscando encontrE que se puede sobreescribir el mEtodo
WndProc, pero no he podido dar con lo que busco. hay varios mensajes que el
SO retorna en el caso en que arrastre la ventana, pero hasta ahora no he
podido detener el evento de mover la ventana. TratE tambiEn con los
diferentes tipos de bordes pero nada me ha funcionado.
Talvez estoy complicando las cosas, pero por el momento creo que he tratado
con lo que se me ha ocurrido desde lo mAs sencillo hasta hacer el override
del metodo WndProc.

El efecto que quiero es por ejemplo cuando tengo una ventana del IE
maximizada que no puedo arrastrar la ventana. La aplicaciOn que estoy
creando tiene una ventana principal maximizada pero no he logrado que se
quede en esa posiciOn.

Si alguien me puede ayudar se lo agradecerIa.
Saludos.


Respuesta Responder a este mensaje
#2 Rodrigo Corral [MVP]
19/08/2004 - 10:05 | Informe spam
No vas mal sobrescribiendo WndProc ;) Tras trastear un ratito... esta es la
conclusión.

[System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.
LayoutKind.Sequential)]
private struct _WINDOWPOS
{
public IntPtr hwnd;
public IntPtr hwndInsertAfter;
public int x;
public int y;
public int cx;
public int cy;
public uint flags;
}

private const int WM_WINDOWPOSCHANGING = 0x0046;
private const int SWP_NOSIZE = 0x2;

[System.Security.Permissions.PermissionSet(System.Security.Permissions.Secur
ityAction.Demand, Name="FullTrust")]
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_WINDOWPOSCHANGING)
{
_WINDOWPOS p = (_WINDOWPOS)m.GetLParam(typeof(_WINDOWPOS));
p.flags |= SWP_NOSIZE;
System.Runtime.InteropServices.Marshal.StructureToPtr(p, m.LParam,
false);
m.Result = IntPtr.Zero;
}
else
base.WndProc(ref m);
}

Un saludo
Rodrigo Corral González [MVP]
microsoft.public.es.vc FAQ
http://vcfaq.europe.webmatrixhosting.net
Respuesta Responder a este mensaje
#3 Rodrigo Corral [MVP]
19/08/2004 - 10:15 | Informe spam
Perdon
private const int SWP_NOMOVE = 0x0002;
es lo correcto.

Un saludo
Rodrigo Corral González [MVP]
microsoft.public.es.vc FAQ
http://vcfaq.europe.webmatrixhosting.net
Respuesta Responder a este mensaje
#4 Pablo Cedeno
19/08/2004 - 17:40 | Informe spam
Saludos,

Gracias por la ayuda, esto funcionO de maravilla. Al inicio no sabIa como
evitar la ejecuciOn del evento, pero ahora veo como. Inclusive es una buena
forma de hacer cosas interesantes.
Gracias nuevamente y es muy probable que me sigan viendo por aquI ; )

"Rodrigo Corral [MVP]" wrote in message
news:OFa%
Perdon
private const int SWP_NOMOVE = 0x0002;
es lo correcto.

Un saludo
Rodrigo Corral González [MVP]
microsoft.public.es.vc FAQ
http://vcfaq.europe.webmatrixhosting.net


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida