Windows - usar as transparencias do 2000

Top  Previous  Next

procedure TForm1.Button1Click(Sender: TObject);

const

  WS_EX_LAYERED = $00080000;

  LMA_COLORKEY  = $00000001;

  LMA_ALPHA     = $00000002;

  TRANSPARENCIA = 100;   // 1..255;

type

  TLayerFunc = function(hwnd : HWND; crKey : COLORREF; bAlpha : BYTE; dwFlags : DWORD) : Boolean; stdcall;

var

  ExtStyle : LongInt;

  LayerFunc : TLayerFunc;

  LibHandle : HModule;

begin

  LibHandle := LoadLibrary(user32);

  if LibHandle > 0 then

  begin

    LayerFunc := GetProcAddress(LibHandle, 'SetLayeredWindowAttributes');

    if Assigned(LayerFunc) then

     begin

      ExtStyle := GetWindowLong(Handle, GWL_EXSTYLE);

      SetWindowLong(Handle, GWL_EXSTYLE, ExtStyle or WS_EX_LAYERED);

      LayerFunc(Handle, RGB(255,0,0), TRANSPARENCIA, LMA_ALPHA or LMA_COLORKEY);

     end;

    FreeLibrary(LibHandle);

  end;

end;