在資源管理器中,每一個(gè)目錄文件都有自已的圖標(biāo),如何在自已的應(yīng)用程序里使用它呢? 下面給出相關(guān)的例程,以及簡(jiǎn)單的調(diào)用實(shí)例。
uses shellapi;
第一步 取得系統(tǒng)的圖標(biāo)列表的句柄,將之賦予一個(gè)圖像列表控件。 procedure GetSystemImageList(imagelist:TImageList); var SysIL: THandle; SFI: TSHFileInfo; begin // 取小圖標(biāo),如果將SHGFI_SMALLICON替換成 //SHGFI_LARGEICON則表示取大圖標(biāo) SysIL := SHGetFileInfo('', 0, SFI, SizeOf(SFI), SHGFI_SYSICONINDEX or SHGFI_SMALLICON); if SysIL <> 0 then begin //將imagelist的圖像列表句柄指向系統(tǒng)圖像句柄 imagelist.Handle := SysIL; //防止組件釋放時(shí)釋放圖像句柄,很重要 imagelist.ShareImages := TRUE; end; end;
第二步 取得要處理文件的圖標(biāo)索引 //取一個(gè)文件的圖標(biāo)索引 function GetIconIndex(const AFile: string; Attrs: DWORD): integer; //Attrs可以為表示文件或路徑FILE_ATTRIBUTE_NORMAL or FILE_ATTRIBUTE_DIRECTORY var SFI: TSHFileInfo; begin SHGetFileInfo(PChar(AFile), Attrs, SFI, SizeOf(TSHFileInfo), SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES); Result := SFI.iIcon; end;
實(shí)例調(diào)用: //如在TreeView中得到c:\mydir的圖標(biāo),因?yàn)槭锹窂剿砸由下窂降臉?biāo)志 aNode.ImageIndex := GetIconIndex('c:\mydir\', FILE_ATTRIBUTE_NORMAL or FILE_ATTRIBUTE_DIRECTORY); //如在TreeView中得到c:\index.html的圖標(biāo) aNode.ImageIndex := GetIconIndex('c:\index.html',FILE_ATTRIBUTE_NORMAL);
|
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!