【发布时间】:2020-12-09 14:00:00
【问题描述】:
我尝试了以下代码,但它不起作用...LoadIconWithScaleDown 返回一个否定的错误代码。
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls,
Vcl.StdCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
procedure FormCreate(Sender: TObject);
procedure LoadResToImg(RID: String; const Img: TImage);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{$R UserResources.res}
uses Winapi.CommCtrl;
procedure TForm1.LoadResToImg(RID: String; const Img: TImage);
var Ico: TIcon;
hI: HICON;
HR: HResult;
begin
Ico:= TIcon.Create;
HR:= LoadIconWithScaleDown(HInstance, PChar(RID), Img.Width, Img.Height, hI);
Ico.Handle:= hI;
Img.Picture.Bitmap.Assign(Ico);
Ico.Free;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
LoadResToImg('OFFLINE', Image1);
end;
end.
UserResources.rc
OFFLINE ICON "gray_button.ico"
ONLINE ICON "green_button.ico"
【问题讨论】:
-
图片上有
const,但字符串上没有。它“应该”是相反的! -
所以像
TImage这样的对象即使没有const也是通过引用传递的? -
是的,对象总是通过引用传递。字符串使用 COW 语义,使用
const编译器不需要更新引用计数。
标签: image delphi resources delphi-10.3-rio