//ファイルのパス
UnicodeString filename = L"C:\サンプル\テスト.XLS";
SHFILEINFO shFileInfo;
SHGetFileInfo(filename.c_str(), NULL, &shFileInfo, sizeof(SHFILEINFO),
SHGFI_ICON | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES);
HICON hIcon = shFileInfo.hIcon;
//何らかの処理
…
//後始末
DestroyIcon(hIcon);
小さいアイコンではなく、大きいアイコンを取得するときは SHGFI_LARGEICON を指定します。
SHGetFileInfo(filename.c_str(), NULL, &shFileInfo, sizeof(SHFILEINFO),
SHGFI_ICON | SHGFI_LARGEICON | SHGFI_USEFILEATTRIBUTES);
TIcon* icon = new TIcon();
icon->Handle = hIcon;
//何らかの処理
…
//後始末
delete icon
フォームにTListViewとTImageListを配置する
TListViewのSmallImagesプロパティにImageList1を指定する。
TListViewのViewStyleプロパティにvsSmallIconを指定する。
アイコンをリストビュー(TListView)に表示するコード
UnicodeString filename = L"C:\サンプル\テスト.XLS";
//小さいアイコンを取得する
SHFILEINFO shFileInfo;
SHGetFileInfo(filename.c_str(), NULL, &shFileInfo, sizeof(SHFILEINFO), SHGFI_ICON | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES);
HICON hIcon = shFileInfo.hIcon;
//HICONからTIconへ
TIcon* icon = new TIcon();
icon->Handle = hIcon;
//追加したアイコンのインデックス
int imageIndex = ImageList1->AddIcon(icon);
//リストビューに項目を追加する
TListItem* listitem = ListView1->Items->Add();
listitem->Caption = ExtractFileName(filename);
listitem->ImageIndex = imageIndex;
//後始末
delete icon;