procedure DoHitTest(var Msg: TWMNCHitTest); message WM_NCHITTEST;
Amikor ez az eljárás meghívásra kerül, akkor változott az egér pozíciója a Form egyes része felett. Ekkor egy programból történő vizsgálattal eldönthetjük, hogy mire is mutat az egér.
procedure TForm1.DoHitTest(var Msg: TWMNCHitTest);
begin
inherited;
Label1.Caption:=IntToStr(Msg.Result);
case Msg.Result of
HTERROR: Label2.Caption:='HTERROR';
HTTRANSPARENT: Label2.Caption:='HTTRANSPARENT';
HTNOWHERE: Label2.Caption:='HTNOWHERE';
HTCLIENT: Label2.Caption:='HTCLIENT';
HTCAPTION: Label2.Caption:='HTCAPTION';
HTSYSMENU: Label2.Caption:='HTSYSMENU';
HTSIZE: Label2.Caption:='HTSIZE';
HTMENU: Label2.Caption:='HTMENU';
HTHSCROLL: Label2.Caption:='HTHSCROLL';
HTVSCROLL: Label2.Caption:='HTVSCROLL';
HTMINBUTTON: Label2.Caption:='HTMINBUTTON';
HTMAXBUTTON: Label2.Caption:='HTMAXBUTTON';
HTLEFT: Label2.Caption:='HTLEFT';
HTRIGHT: Label2.Caption:='HTRIGHT';
HTTOP: Label2.Caption:='HTTOP';
HTTOPLEFT: Label2.Caption:='HTTOPLEFT';
HTTOPRIGHT: Label2.Caption:='HTTOPRIGHT';
HTBOTTOM: Label2.Caption:='HTBOTTOM';
HTBOTTOMLEFT: Label2.Caption:='HTBOTTOMLEFT';
HTBOTTOMRIGHT: Label2.Caption:='HTBOTTOMRIGHT';
HTBORDER: Label2.Caption:='HTBORDER';
HTOBJECT: Label2.Caption:='HTOBJECT';
HTCLOSE: Label2.Caption:='HTCLOSE';
HTHELP: Label2.Caption:='HTHELP';
else Label2.Caption:='unknow';
end;
Label3.Caption:=IntToStr(Msg.XPos)+' - '+IntToStr(Msg.YPos);
Ezt az értéket azonban nem csak lekérdezhetjük, hanem meg is változtathatjuk. Így amikor az egér a fejlécre mutat (HTCAPTION), akkor „átverhetjük” és mondhatjuk azt, hogy nem is mutat sehova (HTNOWHERE). Ezt persze Form-unk el is hiszi és a felhasználó máris nem tudja megmozdítani az ablakot a fejlécénél fogva.
if CheckBox1.Checked and (Msg.Result=HTCAPTION) then begin
Msg.Result:=HTNOWHERE;
end;
end;