Ver Mensaje Individual
  #7  
Antiguo 06-10-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Lepe
Retiro todo lo dicho, con este método tambien pasa lo mencionado por roman
Así es. No sucede si DragFullWindows está activo pero sí en el otro caso. Quizá podrías corregir un poco lidiando también con WM_MOVING, que es el que se encarga del dibujado de la silueta, pero entonces ya la cuestión se complica más de la cuenta.

A final de cuentas, para mover una ventana hay muchos pasos involucrados:

WM_NCHITTEST, WM_ENTERSIZEMOVE, WM_MOVING, WM_EXITSIZEMOVE, WM_MOVE, WM_WINDOWPOSCHANGING, WM_WINDOWPOSCHANGED

y uno puede intentar frenar los necesarios. Pero al quitar el comando SC_MOVE te evitas todo esto, simplemente le dices: está prohibido mover.

En cuanto a lo de maximizar la ventana pues esto lo puedes evitar quitando biMaximize de la propiedad BorderIcons.

Si además se desea evitar que se cambie el tamaño de la ventana, se puede añadir:

DeleteMenu(GetSystemMenu(Handle, false), SC_SIZE, MF_BYCOMMAND);

aunque en este caso también hay que trabajar WM_NCHITTEST para que el cursor del ratón no cambie de forma cuando se coloca sobre los bordes:

Código Delphi [-]
inherited;

if Msg.Result in [HTSIZEFIRST..HTSIZELAST] then
  Msg.Result := Windows.HTNOWHERE;

// Saludos
Responder Con Cita