Create a nonstandard region of hint

Posted in Others

First of all, you should create a new class with ActiveHint procedure. When you create form, you should set HintWindowClass to your new class (TMyHint). Try this:

  TMyHint = class(THintWindow)
  private
    FRegion: THandle;
  public
    procedure ActivateHint(Rect: TRect; const AHint: string); override;
  end;

...

procedure TMyHint.ActivateHint(Rect: TRect; const AHint: string);
begin
  SetWindowRgn(Handle, 0, True);
  DeleteObject(FRegion);
  BoundsRect:=Rect;
  FRegion:=CreateEllipticRgn(0,0,Width,Height);
  SetWindowRgn(Handle, FRegion, True);
  inherited ActivateHint(Rect, AHint);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.ShowHint:=False;
  HintWindowClass:=TMyHint;
  Application.ShowHint:=True;
end;