Hallo
Ich habe mal geschaut, wie es Wintidy macht und bin zu diesen Code gekommen.
Ein vollständiges Beispiel befindet sich im Anhang.
Delphi-Quellcode:
procedure SetDesktopStyle(AViewMode: TViewStyle);
const
STYLES: array[TViewStyle] of DWORD = (LVS_ICON, LVS_SMALLICON, LVS_LIST, LVS_REPORT);
var
S: StyleStruct;
lvHan: HWND;
begin
if IsActiveDesktop then Exit;
lvHan := GetlvHan;
if lvHan <> 0 then
begin
S.StyleOld := GetWindowLong(lvHan, GWL_STYLE);
S.StyleNew := S.StyleOld and not LVS_TYPEMASK;
S.StyleNew := S.StyleNew or STYLES[AViewMode];
SetWindowLong(lvHan, GWL_STYLE, S.StyleNew);
SendMessage(lvHan, WM_STYLECHANGED, GWL_STYLE, Integer(@S));
ShowWindow(lvHan, SW_SHOWNORMAL);
end;
end;