如果要获得文件关联的图标,下面是实现的代码:function TForm1.AddIcon(sfLocal,sExt:string):integer; {AddIcon函数根据sfLocal指定的文件名,将与文件象对应的图标添加到ImageList1 中,并将相应的索引添加到slIcon中 sfLocal 本地文件名,须要获得与该文件相关联的图标局柄} var sfi:TSHFileInfo; i:Integer; begin //获得文件的扩展名 i:= slIcon.IndexOf(sExt); if i>-1 then Result:=i else begin {获得与sfLocal相关联的文件信息,返回 值保存在sfi中,sfi中的hIcon是文件的关联图标局柄} SHGetFileInfo(PChar(sExt),FILE_ATTRIBUTE_NORMAL, sfi, Sizeof(sfi), (SHGFI_USEFILEATTRIBUTES or SHGFI_ICON or SHGFI_SMALLICON )); {调用ImageList_AddIcon函数将sfi.hIcon添加到图标列表控件ImageList1中} i:=ImageList_AddIcon(ImageList1.Handle,sfi.hIcon); //函数调用成功返回值i为图标在imagelist1中的索引,将slIcon中与索引相同的 //string的值设定为sfLocal的扩展名 if i>-1 then slIcon.Strings[i]:=sExt; Result:=i; end; end;如果调用成功会自动将图标添加到ImageList1中
S:string;
Icon,icon1 ,icon2: HIcon;
IconIndex : word;
aa:TIcon;
LI:TListItem;
ICoIndex:integer;
begin
aa:=Ticon.Create; OpenDialog1.Execute;
S:=OpenDialog1.FileName;
s:='*.doc';
IconIndex := 0;
{Icon := ExtractAssociatedIcon(HInstance,
PChar(S),
IconIndex);}
//icon:=ExtractIconEx(pchar(s),IconIndex,icon1,icon2,1);
Icon :=ExtractIcon(HInstance,PChar(S),IconIndex);
aa.Handle:=Icon;
ICoIndex:=ImageList1.AddIcon(aa);
LI:=ListView1.Items.Add;
LI.Caption:=s;
LI.ImageIndex:=ICoIndex;
ListView1.Items[0].ImageIndex:=0;
end
name为ImageList1,当然我取的DOC的图标,只是改变变量S的值就可以了
内容 你设置两个ImageList,一个16,一个32,ExtractIcon(HInstance,PChar(S),IconIndex);
CIonIndex,为0是16*16,为1是32×32,
stanely(邢儿的劳工) 为什么删除呀?555555555555
{AddIcon函数根据sfLocal指定的文件名,将与文件象对应的图标添加到ImageList1
中,并将相应的索引添加到slIcon中
sfLocal 本地文件名,须要获得与该文件相关联的图标局柄}
var
sfi:TSHFileInfo;
i:Integer;
begin
//获得文件的扩展名
i:= slIcon.IndexOf(sExt);
if i>-1 then
Result:=i
else
begin
{获得与sfLocal相关联的文件信息,返回
值保存在sfi中,sfi中的hIcon是文件的关联图标局柄}
SHGetFileInfo(PChar(sExt),FILE_ATTRIBUTE_NORMAL,
sfi, Sizeof(sfi),
(SHGFI_USEFILEATTRIBUTES or SHGFI_ICON or SHGFI_SMALLICON ));
{调用ImageList_AddIcon函数将sfi.hIcon添加到图标列表控件ImageList1中}
i:=ImageList_AddIcon(ImageList1.Handle,sfi.hIcon);
//函数调用成功返回值i为图标在imagelist1中的索引,将slIcon中与索引相同的
//string的值设定为sfLocal的扩展名
if i>-1 then
slIcon.Strings[i]:=sExt;
Result:=i;
end;
end;如果调用成功会自动将图标添加到ImageList1中