«« Site Rescued »»

While the site is still going to move from its current host, a new site will now take its place. More Info.

The new site may have less content, but the core will now remain. And it will now play nicely with phones! Keep an eye on the DelphiDabbler Blog for news.

» Help

How to use the alpha transparency features included in Windows 2000 and later

   
const
  WS_EX_LAYERED = $80000;
  LWA_COLORKEY = 1;
  LWA_ALPHA = 2;


type
  TSetLayeredWindowAttributes = function(
    hwnd: HWND;    {handle to the layered window}
    crKey: TColor; {specifies the color key}
    bAlpha: byte;  {value for the blend function}
    dwFlags: DWORD {action}
  ): BOOL; stdcall;


procedure TForm1.FormCreate(Sender: TObject);
var
  Info: TOSVersionInfo;
  F: TSetLayeredWindowAttributes;
begin
  inherited;
  Info.dwOSVersionInfoSize := SizeOf(Info);
  GetVersionEx(Info);
  if (Info.dwPlatformId = VER_PLATFORM_WIN32_NT) and
    (Info.dwMajorVersion >= 5) then
  begin
    F := GetProcAddress(
      GetModulehandle(user32), 'SetLayeredWindowAttributes'
    );
    if Assigned(F) then
    begin
      SetWindowLong(
        Handle,
        GWL_EXSTYLE,
        GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED
      );
      F(Handle, 0, Round(255 * 80 / 100), LWA_ALPHA);
    end;
  end;
end;
Original resource: The Delphi Pool
Author: Serhiy Perevoznyk
Added: 2009-09-14
Last updated: 2009-09-14

« Return to contents »