图标消失了?(100分)

  • 主题发起人 主题发起人 delphi迷
  • 开始时间 开始时间
D

delphi迷

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
begin
ImageList2.Handle:=GetSystemImageList(TRUE);
end;

function TForm1.GetSystemImageList(Large: boolean): HImageList;
var
SFI: TSHFileInfo;
begin
if Large then
Result := SHGetFileInfo('', 0, SFI, SizeOf(SFI),
SHGFI_SYSICONINDEX or SHGFI_LARGEICON)
else
Result := SHGetFileInfo('', 0, SFI, SizeOf(SFI),
SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ImageList2.Handle:=GetSystemImageList(FALSE);
end;

"function TForm1.GetSystemImageList(Large: boolean): HImageList;"
这个函数是从
“能不能在TreeView和ListView中使用资源管理器中的ImageList?”
中学来的。
但此程序运行后,我桌面上的图标,及资源管理器中的图标全都不见了,
所有本应有图标的地方,图标全都消失了。
重新启动后,我亲爱的图标才又回来了。
 
设ImageList2的ShareImages为<B>True</B>试一下。
因你用GetSystemImageList之后得到的是系统的ImageList,把HImageList
赋值给ImageList2之后,当你的程序结束运行时,ImageList2被Free掉,也
就相当于Free掉系统的ImageList,而系统中的图标等都是用系统的ImageList
来画的,所以出现这种问题。
 
我认为上面的方法可行
不过这是个隐藏图标的好办法,呵呵,又搞到一招
 
接受答案了.
 
后退
顶部