Me gustaría tener mi propia barra de título y, por lo tanto, estoy usando básicamente un panel (Nombre: pnCaption) y elimino la barra de título original en CreateParams. Pero la capacidad de mover la ventana mediante MouseDown-MouseMove en el nuevo panel es un problema.Mover una ventana sin leyenda mediante el uso de un "área de arrastrar"
Normalmente, utilizaría el mensaje NCHITTEST. PERO esto no se señala si el mouse está sobre el panel (mi propio título). Ver código ...
procedure TForm1.CreateParams(var params: TCreateParams);
begin
inherited Createparams(Params);
with Params do
Style := (Style or WS_POPUP) and (not WS_DLGFRAME);
end;
procedure TForm1.WM_NCHitTest(var Msg: TWMNcHitTest);
begin
inherited;
if PtInRect(pnCaption.BoundsRect, ScreenToClient(Point(Msg.XPos, Msg.YPos)))
then Msg.Result := HTCAPTION;
end;
Agradecería cualquier pista sobre cómo llevar a cabo esa tarea.
Cristiano
$ F012 es 'SC_MOVE' con $ 0002 OR'ed con él. Los 4 bits de bajo orden ($ 0000- $ 000F) de 'WM_SYSCOMMAND' son utilizados internamente por el sistema operativo. En este caso, $ 0002 significa que el bit de arrastre está habilitado. –
Genial, eso hace exactamente lo que estaba buscando. Gracias. – Christian
@Remy: gracias. Esa es la información de fondo que nunca obtuve :-) –