mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-12-26 07:30:44 +01:00
LCL/ShellCtrls: Speed-up of built-in shell icons (https://forum.lazarus.freepascal.org/index.php/topic,31625.msg397701.html#msg397701)
git-svn-id: trunk@64821 -
This commit is contained in:
parent
19c40b93bd
commit
3ff38bdc82
@ -21,7 +21,7 @@ unit win32wsshellctrls;
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, ComCtrls, ShelLCtrls, Types,
|
||||
SysUtils, Classes, ComCtrls, ShellCtrls, Types,
|
||||
////////////////////////////////////////////////////
|
||||
// To get as little as posible circles,
|
||||
// uncomment only when needed for registration
|
||||
@ -60,9 +60,11 @@ function GetShellIcon(const AFileName: WideString): TIcon;
|
||||
var
|
||||
FileInfo: TSHFileInfoW;
|
||||
imgHandle: DWORD_PTR;
|
||||
attr: LongInt;
|
||||
begin
|
||||
imgHandle := SHGetFileInfoW(PWideChar(AFileName), 0, FileInfo, SizeOf(FileInfo),
|
||||
SHGFI_ICON + SHGFI_SMALLICON + SHGFI_SYSICONINDEX);
|
||||
attr := FileGetAttr(AFileName);
|
||||
imgHandle := SHGetFileInfoW(PWideChar(AFileName), attr, FileInfo, SizeOf(FileInfo),
|
||||
SHGFI_ICON or SHGFI_SMALLICON or SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES);
|
||||
if imgHandle <> 0 then
|
||||
begin
|
||||
Result := TIcon.Create;
|
||||
@ -120,18 +122,20 @@ var
|
||||
listHandle: HWND;
|
||||
flags: DWord;
|
||||
lvsil: LongInt;
|
||||
attr: LongInt;
|
||||
begin
|
||||
Result := -1;
|
||||
fullName := WideString(AFileName);
|
||||
attr := FileGetAttr(fullName);
|
||||
if ALargeImage then begin
|
||||
flags := SHGFI_LARGEICON or SHGFI_SYSICONINDEX;
|
||||
flags := SHGFI_LARGEICON or SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES;
|
||||
lvsil := LVSIL_NORMAL;
|
||||
end else
|
||||
begin
|
||||
flags := SHGFI_SMALLICON or SHGFI_SYSICONINDEX;
|
||||
flags := SHGFI_SMALLICON or SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES;
|
||||
lvsil := LVSIL_SMALL;
|
||||
end;
|
||||
sysImageHandle := SHGetFileInfoW(PWideChar(fullName), 0, info, SizeOf(info), flags);
|
||||
sysImageHandle := SHGetFileInfoW(PWideChar(fullName), attr, info, SizeOf(info), flags);
|
||||
if sysImageHandle = 0 then
|
||||
Exit;
|
||||
listHandle := AListView.Handle;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user