列表中的文件名在系统中不存在,程序执行后系统图标并不出现,什么原因,代码如下: LV_COLUMN lvColumn;
lvColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
lvColumn.fmt = LVCFMT_LEFT; CRect rectClient;
GetClientRect(&rectClient);
int nWidth = rectClient.right-rectClient.left; lvColumn.cx = nWidth/3;
lvColumn.pszText = _T("名字");
int ret = m_CtlListFile.InsertColumn(1, &lvColumn);
lvColumn.cx = nWidth/6;
lvColumn.pszText = _T("大小");
m_CtlListFile.InsertColumn(2, &lvColumn); lvColumn.fmt = LVCFMT_RIGHT;
lvColumn.cx = 0;
lvColumn.pszText = _T("位置");
m_CtlListFile.InsertColumn(3, &lvColumn);
lvColumn.fmt = LVCFMT_RIGHT;
lvColumn.cx = nWidth/4;
lvColumn.pszText = _T("类型");
m_CtlListFile.InsertColumn(4, &lvColumn);
lvColumn.fmt = LVCFMT_RIGHT;
lvColumn.cx = nWidth/6;
lvColumn.pszText = _T("修改时间");
m_CtlListFile.InsertColumn(5, &lvColumn); LV_ITEM lvitem;
//显示包的内容
int iPos;
POSITION position = EncryptedFileHead.EFHead.GetHeadPosition();
HEADINFO FHead;
while(position != NULL)
{
FHead = EncryptedFileHead.EFHead.GetNext(position);
lvitem.mask=LVIF_TEXT|LVIF_PARAM|LVIF_IMAGE ;
lvitem.iItem=0;
lvitem.iSubItem=0;
CString Temp = FHead.Path;
lvitem.pszText = Temp.GetBuffer(Temp.GetLength());//文件名
lvitem.iImage=1;
lvitem.lParam=0;
iPos=m_CtlListFile.InsertItem(&lvitem);//返回表项插入后的索引号 lvitem.mask=LVIF_TEXT;
lvitem.iItem=iPos;
lvitem.iSubItem=1;
char temp[20];
itoa(FHead.OldLength,temp,10);
lvitem.pszText=temp;
m_CtlListFile.SetItem(&lvitem); lvitem.mask=LVIF_TEXT;
lvitem.iItem=iPos;
lvitem.iSubItem=2;
itoa(FHead.FilePos,temp,10);
lvitem.pszText=temp;
m_CtlListFile.SetItem(&lvitem);
} int nHdrCnt = m_CtlListFile.GetItemCount();
ASSERT(nHdrCnt == 0); // Retrieve the system image list
SHFILEINFO sfi;
memset(&sfi, 0, sizeof(sfi));
HIMAGELIST hil = reinterpret_cast<HIMAGELIST> (
SHGetFileInfo (
"C:\\",
0,
&sfi,
sizeof(sfi),
SHGFI_SYSICONINDEX | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES)
);
if (hil)
{
m_SmallImgList.Attach (hil);
m_CtlListFile.SetImageList (&m_SmallImgList, LVSIL_SMALL);
}
//设置为详细列表形式
DWORD dwStyle = -1;
dwStyle = LVS_REPORT;
if (dwStyle != -1)
ModifyStyle(LVS_TYPEMASK, dwStyle); m_CtlListFile.SetCheck(0);
ListView_SetExtendedListViewStyle(m_CtlListFile.GetSafeHwnd(),
LVS_EX_FULLROWSELECT);
lvColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
lvColumn.fmt = LVCFMT_LEFT; CRect rectClient;
GetClientRect(&rectClient);
int nWidth = rectClient.right-rectClient.left; lvColumn.cx = nWidth/3;
lvColumn.pszText = _T("名字");
int ret = m_CtlListFile.InsertColumn(1, &lvColumn);
lvColumn.cx = nWidth/6;
lvColumn.pszText = _T("大小");
m_CtlListFile.InsertColumn(2, &lvColumn); lvColumn.fmt = LVCFMT_RIGHT;
lvColumn.cx = 0;
lvColumn.pszText = _T("位置");
m_CtlListFile.InsertColumn(3, &lvColumn);
lvColumn.fmt = LVCFMT_RIGHT;
lvColumn.cx = nWidth/4;
lvColumn.pszText = _T("类型");
m_CtlListFile.InsertColumn(4, &lvColumn);
lvColumn.fmt = LVCFMT_RIGHT;
lvColumn.cx = nWidth/6;
lvColumn.pszText = _T("修改时间");
m_CtlListFile.InsertColumn(5, &lvColumn); LV_ITEM lvitem;
//显示包的内容
int iPos;
POSITION position = EncryptedFileHead.EFHead.GetHeadPosition();
HEADINFO FHead;
while(position != NULL)
{
FHead = EncryptedFileHead.EFHead.GetNext(position);
lvitem.mask=LVIF_TEXT|LVIF_PARAM|LVIF_IMAGE ;
lvitem.iItem=0;
lvitem.iSubItem=0;
CString Temp = FHead.Path;
lvitem.pszText = Temp.GetBuffer(Temp.GetLength());//文件名
lvitem.iImage=1;
lvitem.lParam=0;
iPos=m_CtlListFile.InsertItem(&lvitem);//返回表项插入后的索引号 lvitem.mask=LVIF_TEXT;
lvitem.iItem=iPos;
lvitem.iSubItem=1;
char temp[20];
itoa(FHead.OldLength,temp,10);
lvitem.pszText=temp;
m_CtlListFile.SetItem(&lvitem); lvitem.mask=LVIF_TEXT;
lvitem.iItem=iPos;
lvitem.iSubItem=2;
itoa(FHead.FilePos,temp,10);
lvitem.pszText=temp;
m_CtlListFile.SetItem(&lvitem);
} int nHdrCnt = m_CtlListFile.GetItemCount();
ASSERT(nHdrCnt == 0); // Retrieve the system image list
SHFILEINFO sfi;
memset(&sfi, 0, sizeof(sfi));
HIMAGELIST hil = reinterpret_cast<HIMAGELIST> (
SHGetFileInfo (
"C:\\",
0,
&sfi,
sizeof(sfi),
SHGFI_SYSICONINDEX | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES)
);
if (hil)
{
m_SmallImgList.Attach (hil);
m_CtlListFile.SetImageList (&m_SmallImgList, LVSIL_SMALL);
}
//设置为详细列表形式
DWORD dwStyle = -1;
dwStyle = LVS_REPORT;
if (dwStyle != -1)
ModifyStyle(LVS_TYPEMASK, dwStyle); m_CtlListFile.SetCheck(0);
ListView_SetExtendedListViewStyle(m_CtlListFile.GetSafeHwnd(),
LVS_EX_FULLROWSELECT);
SHFILEINFO sfi ; himlSmall = (HIMAGELIST)SHGetFileInfo((LPCSTR)"C:\\",
FILE_ATTRIBUTE_NORMAL,
&sfi,
sizeof(SHFILEINFO),
SHGFI_PIDL | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES);//SHGFI_SYSICONINDEX | SHGFI_SMALLICON) ;
if( himlSmall )
m_SmallImgList->Attach(himlSmall); //把ImageList加入到ListView里
if( m_SmallImgList != NULL)
m_CtlListFile.SetImageList(m_SmallImgList, LVSIL_SMALL); LV_COLUMN lvColumn;
lvColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
lvColumn.fmt = LVCFMT_LEFT; CRect rectClient;
GetClientRect(&rectClient);
int nWidth = rectClient.right-rectClient.left; lvColumn.cx = nWidth/3;
lvColumn.pszText = _T("名字");
int ret = m_CtlListFile.InsertColumn(1, &lvColumn);
lvColumn.cx = nWidth/6;
lvColumn.pszText = _T("大小");
m_CtlListFile.InsertColumn(2, &lvColumn); lvColumn.fmt = LVCFMT_RIGHT;
lvColumn.cx = 0;
lvColumn.pszText = _T("位置");
m_CtlListFile.InsertColumn(3, &lvColumn);
lvColumn.fmt = LVCFMT_RIGHT;
lvColumn.cx = nWidth/4;
lvColumn.pszText = _T("类型");
m_CtlListFile.InsertColumn(4, &lvColumn);
lvColumn.fmt = LVCFMT_RIGHT;
lvColumn.cx = nWidth/6;
lvColumn.pszText = _T("修改时间");
m_CtlListFile.InsertColumn(5, &lvColumn); CEncryptedFileHead EncryptedFileHead;
EncryptedFileHead.Load(Path); //生成图标 POSITION position = EncryptedFileHead.EFHead.GetHeadPosition();
HEADINFO FHead;
/* while(position != NULL)
{
FHead = EncryptedFileHead.EFHead.GetNext(position);
CString Temp = FHead.Path;
SHFILEINFO sfi;
SHGetFileInfo(".zip", FILE_ATTRIBUTE_NORMAL, &sfi, sizeof(SHFILEINFO), SHGFI_SYSICONINDEX |SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES);
m_SmallImgList->Add(sfi.hIcon);
}*/ LV_ITEM lvitem;
//显示包的内容
int iPos;
position = EncryptedFileHead.EFHead.GetHeadPosition();
int idxidx = 0;
while(position != NULL)
{
FHead = EncryptedFileHead.EFHead.GetNext(position);
lvitem.mask=LVIF_TEXT|LVIF_PARAM|LVIF_IMAGE ;
lvitem.iItem=0;
lvitem.iSubItem=0;
CString Temp = FHead.Path;
lvitem.pszText = Temp.GetBuffer(Temp.GetLength());
SHFILEINFO sfi;
lvitem.iImage=SHGetFileInfo(lvitem.pszText, FILE_ATTRIBUTE_NORMAL, &sfi, sizeof(SHFILEINFO), SHGFI_PIDL | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES);
lvitem.lParam=0; iPos=m_CtlListFile.InsertItem(&lvitem);//返回表项插入后的索引号 lvitem.mask=LVIF_TEXT;
lvitem.iItem=iPos;
lvitem.iSubItem=1;
char temp[20];
itoa(FHead.OldLength,temp,10);
lvitem.pszText=temp;
m_CtlListFile.SetItem(&lvitem); lvitem.mask=LVIF_TEXT;
lvitem.iItem=iPos;
lvitem.iSubItem=2;
itoa(FHead.FilePos,temp,10);
lvitem.pszText=temp;
AllFilePos.Add(temp);
m_CtlListFile.SetItem(&lvitem); }
//设置为详细列表形式
DWORD dwStyle = -1;
dwStyle = LVS_REPORT;
if (dwStyle != -1)
ModifyStyle(LVS_TYPEMASK, dwStyle); m_CtlListFile.SetCheck(0);
ListView_SetExtendedListViewStyle(m_CtlListFile.GetSafeHwnd(),
LVS_EX_FULLROWSELECT);