Mega Code Archive

 
Categories / Delphi / Examples
 

Trapping non client areas

Title: Trapping non client areas Question: How can I trap messages in the non client areas of my form, such as the title bar? Answer: Create a message handler for one of the variety of WM_NC (non client) messages available to trap. (search the Windows API help file for WM_NC). This example shows how to track mouse movement in all of the non client areas of the form. Example: unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) private procedure WMNCMOUSEMOVE(var Message: TMessage); message WM_NCMOUSEMOVE; { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.WMNCMOUSEMOVE(var Message: TMessage); var s : string; begin case Message.wParam of HTERROR : s := 'HTERROR'; HTTRANSPARENT : s := 'HTTRANSPARENT'; HTNOWHERE : s := 'HTNOWHERE'; HTCLIENT : s := 'HTCLIENT'; HTCAPTION : s := 'HTCAPTION'; HTSYSMENU : s := 'HTSYSMENU'; HTSIZE : s := 'HTSIZE'; HTMENU : s := 'HTMENU'; HTHSCROLL : s := 'HTHSCROLL'; HTVSCROLL : s := 'HTVSCROLL'; HTMINBUTTON : s := 'HTMINBUTTON'; HTMAXBUTTON : s := 'HTMAXBUTTON'; HTLEFT : s := 'HTLEFT'; HTRIGHT : s := 'HTRIGHT'; HTTOP : s := 'HTTOP'; HTTOPLEFT : s := 'HTTOPLEFT'; HTTOPRIGHT : s := 'HTTOPRIGHT'; HTBOTTOM : s := 'HTBOTTOM'; HTBOTTOMLEFT : s := 'HTBOTTOMLEFT'; HTBOTTOMRIGHT : s := 'HTBOTTOMRIGHT'; HTBORDER : s := 'HTBORDER'; HTOBJECT : s := 'HTOBJECT'; HTCLOSE : s := 'HTCLOSE'; HTHELP : s := 'HTHELP'; else s := ''; end; Form1.Caption := s; Message.Result := 0; end; end.