Warum LoadLibrary?
Wenn das, dann darf man auch ein FreeLibrary nicht vergessen.
User32.dll sollte aber eh immer geladen sein,
somit reicht ein GetModuleHandle.
Zitat:
Warum LoadLibrary?
na ja das ist schon stimmig. Das tut er doch!
FreeLibrary(dwm10); (Die Namensgebung ist aber falsch weil es nichts mit DWM zu tun hat)
Aber gehört zu einem anderen Thema..
Nur der Vollständigkeit halber hier der Code den Emil anspricht:
Delphi-Quellcode:
procedure kzTheme.SetDwmMode(const AMode: ShortInt);
const
WCA_ACCENT_POLICY = 19;
ACCENT_DISABLE = 0;
ACCENT_ENABLE_GRADIENT = 1;
ACCENT_ENABLE_TRANSPARENT = 2;
ACCENT_ENABLE_BLURBEHIND = 3;
GRADIENT_COLOR = $01000000;
DrawLeftBorder = $20;
DrawTopBorder = $40;
DrawRightBorder = $80;
DrawBottomBorder = $100;
var
dwm10: THandle;
data: TWinCompAttrData;
accent: AccentPolicy;
begin
if (not ((AMode = 0) or (AMode = 2) or (AMode = 3))) then
Exit;
dwm10 := LoadLibrary(user32);
try
@SetWindowCompositionAttribute :=
GetProcAddress(dwm10, 'SetWindowCompositionAttribute');
if @SetWindowCompositionAttribute <> nil then
begin
accent.AccentState := AMode;
accent.AccentFlags := DrawLeftBorder or DrawTopBorder or
DrawRightBorder or DrawBottomBorder;
if ((FStyleTheme = ThemeSystem) or (FStyleTheme = ThemeWallpaper)) then
accent.GradientColor := FColorBackground;
data.attribute := WCA_ACCENT_POLICY;
data.dataSize := SizeOf(accent);
data.pData := @accent;
SetWindowCompositionAttribute(FForm.Handle, data);
end;
finally
FreeLibrary(dwm10);
end;
end;