Mega Code Archive

 
Categories / Delphi / Hardware
 

How to draw a highlight box around the control under the mouse

Title: How to draw a highlight box around the control under the mouse var hOldWnd :HWND; procedure FrameWindow(Wnd: HWnd); var Rect: TRect; DC: hDC; OldPen, Pen: hPen; OldBrush, Brush: hBrush; X2, Y2: Integer; begin { Get the target window's rect and DC } GetWindowRect(Wnd, Rect); DC := GetWindowDC(Wnd); { Set ROP appropriately for highlighting } SetROP2(DC, R2_NOT); { Select brush and pen } Pen := CreatePen(PS_InsideFrame, 4, 0); OldPen := SelectObject(DC, Pen); Brush := GetStockObject(Null_Brush); OldBrush := SelectObject(DC, Brush); { Set dimensions of highlight } X2 := Rect.Right - Rect.Left; Y2 := Rect.Bottom - Rect.Top; { Draw highlight box } Rectangle(DC, 0, 0, X2, Y2); { Clean up } SelectObject(DC, OldBrush); SelectObject(DC, OldPen); ReleaseDC(Wnd, DC); { Do NOT delete the brush, because it was a stock object } DeleteObject(Pen); end; procedure TForm1.Timer1Timer(Sender: TObject); var hNewWnd: HWnd; begin hNewWnd := WindowFromPoint(Mouse.CursorPos); { To avoid flickering, remove the old frame ONLY if moved to new window } if hNewWnd hOldWnd then begin if hOldWnd 0 then FrameWindow(hOldWnd); if hNewWnd 0 then FrameWindow(hNewWnd); hOldWnd := hNewWnd; end; end;