unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
const
WS_EX_LAYERED = $80000;
LWA_COLORKEY = 1;
LWA_ALPHA = 2;
type
TSetLayeredWindowAttributes =
function(
hwnd: HWND;
// handle fuers fenster
crKey: TColor;
// die farbe
bAlpha: byte;
// wert fuer die blend funktion
dwFlags: DWORD
//
): BOOL;
stdcall;
TForm1 =
class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure SetTransparentForm(AHandle: THandle; AValue: byte = 0);
var
Info: TOSVersionInfo;
SetLayeredWindowAttributes: TSetLayeredWindowAttributes;
begin
// geht meines wissen ab win2000
Info.dwOSVersionInfoSize := SizeOf(Info);
GetVersionEx(Info);
if (Info.dwPlatformId = VER_PLATFORM_WIN32_NT)
and
(Info.dwMajorVersion >= 5)
then
begin
SetLayeredWindowAttributes := GetProcAddress(GetModulehandle(user32), '
SetLayeredWindowAttributes');
if Assigned(SetLayeredWindowAttributes)
then
begin
SetWindowLong(AHandle, GWL_EXSTYLE, GetWindowLong(AHandle, GWL_EXSTYLE)
or WS_EX_LAYERED);
//und jetzt transparent zeichnen
SetLayeredWindowAttributes(AHandle, 0, AValue, LWA_ALPHA);
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
// 0 --> voll transparent
// 255 --> nicht trabsparent
SetTransparentForm(
Handle, 240);
end;
end.