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