1 m_listctrl.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_SMALLICON); 2 LONG lStyle; 3 lStyle = GetWindowLong(m_listctrl.m_hWnd, GWL_STYLE);//获取当前窗口style 4 lStyle &= ~LVS_TYPEMASK; //清除显示方式位 5 lStyle |= LVS_REPORT; //设置style 6 SetWindowLong(m_listctrl.m_hWnd, GWL_STYLE, lStyle);//设置style 7 8 9 m_image.Create(16,16,TRUE|ILC_COLOR32,4,4);//创建图像形式10 m_listctrl.SetImageList(&m_image,LVSIL_SMALL); //listcontrol关联图像11 m_listctrl.InsertColumn(0,_T("文件名"),LVCFMT_CENTER,500);
listctrl的初始化并和cimage对象绑定。cimage对象必须为全局或者是类数据成员。
1 UINT __stdcall ShowFunc(LPVOID p) 2 { 3 CGetFileICONDlg *dlg = (CGetFileICONDlg*) p; 4 while(1) 5 { 6 WaitForSingleObject(dlg->hevent,INFINITE); 7 dlg->ClearList(); 8 map,HICON>::iterator iter = dlg->m_fileinfo.begin(); 9 int i = 0;10 while(iter != dlg->m_fileinfo.end())11 {12 if(dlg->isFirst)13 {14 dlg->isFirst = FALSE;15 }16 else17 {18 dlg->m_image.Remove(0);19 }20 dlg->m_image.Add(iter->second);//增加图像。21 dlg->m_listctrl.InsertItem(i,_T(""));22 LVITEM lvItem;23 lvItem.mask = LVIF_TEXT|LVIF_IMAGE|LVIF_STATE;24 lvItem.iImage = i;//图像在image里面的下标25 dlg->m_listctrl.InsertItem(&lvItem);26 dlg->m_listctrl.SetItemText(i,0,iter->first.first);27 28 iter++;29 i++;30 }31 ResetEvent(dlg->hevent);32 }33 return 0;34 }
//将图标显示到listctrl中
1 HICON CGetFileICONDlg::GetFileICON(CString strFilePath)2 {3 SHFILEINFO stFileInfo;4 :: SHGetFileInfo(strFilePath, 0, &stFileInfo, sizeof(stFileInfo), SHGFI_ICON);5 return stFileInfo.hIcon;6 }
得到文件的图标