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。 展开
{
...
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。 展开
1个回答
展开全部
首先确定之前已经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|
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询