Verschieben eines Fensters ohne Beschriftung mithilfe eines "Ziehbereichs"

Ich möchte eine eigene Beschriftungsleiste haben und verwende daher im Grunde ein Bedienfeld (Name: pnCaption) und entferne die ursprüngliche Beschriftungsleiste in CreateParams. Die Möglichkeit, das Fenster mit MouseDown-MouseMove im neuen Bedienfeld zu verschieben, ist jedoch ein Problem.

Normalerweise würden Sie die Nachricht NCHITTEST verwenden. ABER dies wird nicht angezeigt, wenn sich die Maus über dem Bedienfeld befindet (meine eigene Beschriftung). Siehe Code ...

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;  

Ich würde mich über Hinweise freuen, wie diese Aufgabe erledigt werden kann.

Christia

Antworten auf die Frage(8)

Ihre Antwort auf die Frage