16,472
社区成员
发帖
与我相关
我的任务
分享
while (pEnum->Next(1, &pidlTemp, &dwFetched) == S_OK && dwFetched)
{
LVITEM lvItem;
ZeroMemory(&lvItem, sizeof(lvItem));
lvItem.mask = LVIF_PARAM | LVIF_TEXT | LVIF_IMAGE | LVIF_STATE;
pParentFolder->AddRef();
pItem = (LPAFX_SHELLITEMINFO)GlobalAlloc(GPTR, sizeof(AFX_SHELLITEMINFO));
pItem->pidlRel = pidlTemp;
pItem->pidlFQ = afxShellManager->ConcatenateItem(pidlParent, pidlTemp);////如上楼所说,需要和父级的PIDL相连接
pItem->pParentFolder = pParentFolder;
lvItem.lParam = (LPARAM)pItem;
lvItem.pszText = _T("");
lvItem.iImage = OnGetItemIcon(GetItemCount(), pItem);
DWORD dwAttr = SFGAO_DISPLAYATTRMASK;
pParentFolder->GetAttributesOf(1, (LPCITEMIDLIST*)&pidlTemp, &dwAttr);
if (dwAttr&SFGAO_LINK)
{
dwFetched=0;
continue;
}
if (dwAttr & SFGAO_SHARE)
{
lvItem.mask |= LVIF_STATE;
lvItem.stateMask |= LVIS_OVERLAYMASK;
lvItem.state |= INDEXTOOVERLAYMASK(1);
}
if (dwAttr & SFGAO_GHOSTED)
{
lvItem.mask |= LVIF_STATE;
lvItem.stateMask |= LVIS_CUT;
lvItem.state |= LVIS_CUT;
}
int iItem = InsertItem(&lvItem);
if (iItem >= 0)
{
const int nColumns = m_wndHeader.GetItemCount();
for (int iColumn = 0; iColumn < nColumns; iColumn++)
{
SetItemText(iItem, iColumn, OnGetItemText(iItem, iColumn, pItem));
}
m_nFileCount++;
}
CString str;
GetItemPath(str,iItem);
if (str.IsEmpty())
{
DeleteItem(iItem);
m_nFileCount--;
}
dwFetched = 0;
}
pEnum->Release();
}