MFC ListCtrl组件显示不了系统文件图标的问题。求大神解答!

BOOLMy_Chat_With::OnInitDialog(){...plstCtrl=(CListCtrl*)GetDlgItem(IDC_LIST1);plstCt... BOOL My_Chat_With::OnInitDialog()
{
...
plstCtrl = (CListCtrl *)GetDlgItem(IDC_LIST1);
plstCtrl->SetExtendedStyle ( plstCtrl->GetExtendedStyle()|LVS_EX_FULLROWSELECT|LVS_EX_SUBITEMIMAGES);
...
}
然后点击一个按钮希望将指定路径下文件图标以及文件名在ListCtrl中显示
void My_Chat_With::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
SHFILEINFO info;
memset(&info, 0, sizeof(info));
HIMAGELIST hImagelst = ImageList_Create(32, 32, ILC_COLORDDB|ILC_MASK, 1, 1);
hImagelst = (HIMAGELIST)SHGetFileInfo(_T("F:\\TEST\\LBTY212121901AC\\processed.txt"), 0, &info, sizeof(info), SHGFI_ICON|SHGFI_SMALLICON|SHGFI_DISPLAYNAME);
m_cFileImages.Attach(hImagelst);
plstCtrl->SetImageList(&m_cFileImages, LVSIL_NORMAL);

LVITEM *pItem = new LVITEM();
pItem->mask = LVIF_IMAGE|LVIF_TEXT;
pItem->iImage = info.iIcon;
pItem->pszText = info.szDisplayName;
pItem->iItem = 0;
pItem->iSubItem = 0;
plstCtrl->InsertItem( pItem );
delete(pItem);
}
其中CImageList m_cFileImages;为全局变量
运行过后 只能显示文件名,却不能显示图标。求解答!
ListCtrl的View属性选择的是ICON。
展开
 我来答
bhtzu
2013-11-07 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4196万
展开全部

首先确定之前已经CoInitialize 初始化。

然后加一个flag试试

hImagelst = (HIMAGELIST)SHGetFileInfo(_T("F:\\TEST\\LBTY212121901AC\\processed.txt"), 0, &info, sizeof(info), SHGFI_SYSICONINDEX|SHGFI_ICON|SHGFI_SMALLICON|SHGFI_DISPLAYNAME);

SHGFI_SYSICONINDEX|

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式