1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| uses Controls, Math;
var
Icons: array[ICON_SMALL..ICON_BIG] of TIcon;
procedure SetApplicationIcon(aType: integer; aFileName :PChar); stdcall; export;
var
Handle :THandle;
Bmp :TBitmap;
Tmp :TBitmap;
begin
if not aType in [ICON_SMALL, ICON_BIG] then Exit;
Bmp := TBitmap.Create;
Tmp := TBitmap.Create;
try
Handle := IfThen(aType=ICON_SMALL, MainFormHandle, ApplicationHandle);
Tmp.Width := GetSystemMetrics(IfThen(aType=ICON_SMALL, SM_CXSMICON, SM_CXICON));
Tmp.Height := GetSystemMetrics(IfThen(aType=ICON_SMALL, SM_CYSMICON, SM_CYICON));
Bmp.LoadFromFile(aFileName);
Tmp.Canvas.StretchDraw(Rect(0, 0, Tmp.Width, Tmp.Height), Bmp);
with TImageList.CreateSize(Tmp.Width, Tmp.Height) do
try
AddMasked(Tmp, Tmp.TransparentColor);
GetIcon(0, Icons[aType]);
finally
Free;
end;
SendMessage(Handle, WM_SETICON, aType, Icons[aType].Handle);
finally
Bmp.Free;
Tmp.Free;
end;
end;
exports SetApplicationIcon;
initialization
Icons[ICON_SMALL] := TIcon.Create;
Icons[ICON_BIG] := TIcon.Create;
finalization
Icons[ICON_SMALL].Free;
Icons[ICON_BIG].Free; |
Partager