unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TfrmMoveClient = class(TForm)
  procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmMoveClient: TfrmMoveClient;

implementation

{$R *.dfm}
procedure TfrmMoveClient.WMNCHitTest(var Message: TWMNCHitTest);
var
  rc: TRect;
  p: TPoint;
begin
  //Если точка приходится на клиентскую область, то заставим систему считать
  //эту область частью строки заголовка
  rc := GetClientRect();
  p.X := Message.XPos;
  p.Y := Message.YPos;
  p := ScreenToClient(p);
  if PtInRect(rc, p) then
    Message.Result := HTCAPTION
  else
    //Обработка по умолчанию
    Message.Result := DefWindowProc(Handle, Message.Msg, 0,
                                    65536 * Message.YPos + Message.XPos);
end;

end.
