BOOL CCListCtrlDlg::OnInitDialog()
{
// 建立图像列表,ImageList
m_ilIcons.Create(16, 16, ILC_COLOR32|ILC_MASK, 0, 0);
// 绑定到控件
m_list.SetImageList(&m_ilIcons, TVSIL_NORMAL);
// 初始化图标列表
SHFILEINFO sfi = {0};
HIMAGELIST imagelist;
imagelist=(HIMAGELIST)SHGetFileInfo(_T(""),
0,
&sfi,
sizeof(SHFILEINFO),
SHGFI_SYSICONINDEX | SHGFI_SMALLICON ) ;
this->m_list.SetImageList(CImageList::FromHandle(imagelist),LVSIL_SMALL);
// 修改风格
DWORD dwStyle = m_list.GetExtendedStyle(); //获取当前扩展样式
dwStyle |= LVS_EX_FULLROWSELECT; //选中某行使整行高亮(report风格时)
dwStyle |= LVS_EX_GRIDLINES; //网格线(report风格时)
dwStyle |= LVS_EX_CHECKBOXES; //item前生成checkbox控件
m_list.SetExtendedStyle(dwStyle); //设置扩展风格
// 初始化
m_list.InsertColumn(0,_T("源文件"),LVCFMT_LEFT,220);
m_list.InsertColumn(1,_T("目标目录"),LVCFMT_LEFT,220);
m_list.InsertColumn(2,_T("状态"),LVCFMT_LEFT,100);
}
//
void CCListCtrlDlg::OnBnClickedButton1()
{
AddFiles("d:\\install\\VA_X_Setup1925.exe", TRUE);
AddFiles("D:\\install\\vs2005.iso", TRUE);
AddFiles("D:\\", TRUE);
AddFiles("C:\\Windows", TRUE);
}
void CCListCtrlDlg::AddFiles(LPCTSTR lpszFileName, BOOL bAddToDocument)
{
// int nIcon = GetIconIndex(lpszFileName, FALSE, TRUE);
int nIcon = GetIconIndexEx(lpszFileName, FALSE);
int nItem = m_list.GetItemCount();
m_list.InsertItem(nItem, lpszFileName, nIcon);
m_list.SetItemText(nItem, 1, 0);
m_list.SetItemText(nItem, 2, 0);
m_list.SetItemText(nItem, 3, lpszFileName);
}
int CCListCtrlDlg::GetIconIndexEx(LPCTSTR lpszPath, BOOL bSelected)
{
SHFILEINFO sfi;
memset(&sfi, 0, sizeof(sfi));
DWORD dwFileAttr = GetFileAttributes(lpszPath);
if (dwFileAttr & FILE_ATTRIBUTE_DIRECTORY)
{
SHGetFileInfo(lpszPath,
FILE_ATTRIBUTE_DIRECTORY,
&sfi,
sizeof(sfi),
SHGFI_SMALLICON | SHGFI_SYSICONINDEX |
SHGFI_USEFILEATTRIBUTES |(bSelected ? SHGFI_OPENICON : 0));
return sfi.iIcon;
}
else if (dwFileAttr & FILE_ATTRIBUTE_DEVICE)
{
SHGetFileInfo(lpszPath,
FILE_ATTRIBUTE_DEVICE,
&sfi,
sizeof(sfi),
SHGFI_SMALLICON | SHGFI_SYSICONINDEX |
SHGFI_USEFILEATTRIBUTES |(bSelected ? SHGFI_OPENICON : 0));
return sfi.iIcon;
}
else
{
SHGetFileInfo (lpszPath,
FILE_ATTRIBUTE_NORMAL,
&sfi,
sizeof(sfi),
SHGFI_SMALLICON | SHGFI_SYSICONINDEX |
SHGFI_USEFILEATTRIBUTES | (bSelected ? SHGFI_OPENICON : 0));
return sfi.iIcon;
}
return -1;
}
绑定图标到 CListCtrl
最新推荐文章于 2021-03-30 16:27:07 发布