MFC 取得文件图标并显示的方法

ドライブアイコンを取得してリストコントロールに表示する
2010年 01月 12日

// 次の2行は、通常ヘッダファイルに含めます。
CImageList m_imageList; // イメージリスト
CListCtrl m_listCtrl; // リストコントロール

// イメージリストを作成し、リストコントロールにセットする
CImageList* pImageList;
pImageList = new CImageList();
pImageList->Create(32, 32, ILC_COLOR32 | ILC_MASK, 10, 10);
m_aNswerList.SetImageList(pImageList, LVSIL_SMALL);

// ドライブアイコン(フォルダでも可:ファイルの場合は、フラグを変更の事)
// を表示したいパスを指定

CString strPath = “c:\”;

// アイコンを取得する

HICON hIcon = NULL;
SHFILEINFO sfi;
if(SHGetFileInfo(strPath, FILE_ATTRIBUTE_DIRECTORY, &sfi, sizeof(SHFILEINFO), SHGFI_ICON) != 0)
{
// sfi.hIcon にアイコンハンドルが戻ってくる
hIcon = sfi.hIcon;
}

int nImage = -1;
if(hIcon)
{
// アイコンをイメージリストに追加
nImage = m_imageList.Add(hIcon);

// 使い終わったアイコンリソースを破棄
DeleteObject(hIcon);

}

// リストコントロールに登録
nItem = m_listCtrl.InsertItem(++nItem, strPath, nImage);

// 上のちょっと回りくどい処理は、
// アイコンが取得出来なくても、
// イメージリストへの追加が出来なくても、
// とりあえず、リストコントロールにテキストだけでも
// 登録できるようにしています。

※1
CListCtrl::SetImageList() に渡す、引数によって、どのビューで使用されるアイコンかを
設定する事が出来る。らしい。

LVSIL_NORMAL — アイコンビュー
LVSIL_SMALL — レポートビュー

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值