Mi piacerebbe avere la mia barra di didascalia e quindi sto usando fondamentalmente un pannello (Nome: pnCaption) e rimuovere la barra dei sottotitoli originale in CreateParams. Ma la possibilità di spostare la finestra con MouseDown-MouseMove nel nuovo pannello è un problema.Spostamento di una finestra senza didascalie utilizzando una "area di trascinamento"
Normalmente si utilizzerà il messaggio NCHITTEST. MA questo non è segnalato se il mouse è sopra il pannello (la mia didascalia). Vedi codice ...
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;
Apprezzerei qualsiasi suggerimento su come eseguire tale compito.
Christian
$ F012 è 'SC_MOVE' con $ 0002 OR'ed con esso. I 4 bit di ordine inferiore ($images. $ 000F) di 'WM_SYSCOMMAND' sono utilizzati dall'OS internamente. In questo caso, $ 0002 significa che il bit di trascinamento è abilitato. –
Grande - questo fa esattamente quello che stavo cercando. Grazie. – Christian
@Remy: grazie. Questo è un po 'di informazioni di base che non ho mai ricevuto :-) –