Enable the drop shadow effect on a window (XP)

Spread the love

Question:

I saw some applications that override the default window behaviour in that
way that the window display a thin transparent shadow. How to do this?

Answer:

Override the CreateParams method of your form and add the
CS_DROPSHADOW flag to the WindowClass.Style.

CS_DROPSHADOW Enables the drop shadow effect on a window.
The effect is turned on and off through SPI_SETDROPSHADOW.
Typically, this is enabled for small, short-lived windows such as
menus to emphasize their Z order relationship to other windows.


type
  TForm1 = class(TForm)
  protected
    procedure CreateParams(var Params: TCreateParams); override;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.CreateParams(var Params: TCreateParams);
const
  CS_DROPSHADOW = $00020000;
begin
  inherited;
  Params.WindowClass.Style := Params.WindowClass.Style or CS_DROPSHADOW;
end;