SlideShare a Scribd company logo
HRESULT CMyShellListCtrl::EnumObjects(LPSHELLFOLDER pParentFolder, LPITEMIDLIST
pidlParent)
{
ASSERT_VALID(this);
ASSERT_VALID(afxShellManager);
LPENUMIDLIST pEnum;
HRESULT hRes = pParentFolder->EnumObjects(NULL, m_nTypes, &pEnum);
if (SUCCEEDED(hRes))
{
LPITEMIDLIST pidlTemp;
DWORD dwFetched = 1;
LPAFX_SHELLITEMINFO pItem;
//enumerate the item's PIDLs
while (pEnum->Next(1, &pidlTemp, &dwFetched) == S_OK && dwFetched)
{
LVITEM lvItem;
ZeroMemory(&lvItem, sizeof(lvItem));
//fill in the TV_ITEM structure for this item
lvItem.mask = LVIF_PARAM | LVIF_TEXT | LVIF_STATE;
//AddRef the parent folder so it's pointer stays valid
pParentFolder->AddRef();
//put the private information in the lParam
pItem = (LPAFX_SHELLITEMINFO)GlobalAlloc(GPTR,
sizeof(AFX_SHELLITEMINFO));
pItem->pidlRel = pidlTemp;
pItem->pidlFQ = afxShellManager->ConcatenateItem(pidlParent,
pidlTemp);
pItem->pParentFolder = pParentFolder;
lvItem.lParam = (LPARAM)pItem;
lvItem.pszText = _T("");
int n = GetItemCount();
lvItem.iImage = OnGetItemIcon(n, pItem);
//determine if the item is shared
DWORD dwAttr = SFGAO_FOLDER | SFGAO_DISPLAYATTRMASK;// SFGAO_FOLDER
pParentFolder->GetAttributesOf(1, (LPCITEMIDLIST*)&pidlTemp,
&dwAttr);
if (dwAttr & SFGAO_SHARE)
{
lvItem.mask |= LVIF_STATE;
lvItem.stateMask |= LVIS_OVERLAYMASK;
lvItem.state |= INDEXTOOVERLAYMASK(1); //1 is the index for the
shared overlay image
}
if (dwAttr & SFGAO_GHOSTED)
{
lvItem.mask |= LVIF_STATE;
lvItem.stateMask |= LVIS_CUT;
lvItem.state |= LVIS_CUT;
}
if (dwAttr & SFGAO_FOLDER)
{
//zipÀº À©µµ¿ì¿¡¼± Æú´õ·Î °£ÁֵDZ⠶§¹®¿¡ ¿©±â¼ ó¸®ÇØ¾ß ÇÔ.
}
else
{
SHFILEINFO sfi;
TCHAR szPath [MAX_PATH];
if (SHGetPathFromIDList(pItem->pidlFQ, szPath))
{
CFileStatus fs;
if (CFile::GetStatus(szPath, fs))
{
CString s = szPath;
int n = s.ReverseFind('.');
if(n!=-1)
{
s = s.Mid(n+1);
s.MakeLower();
if(s != _T("jpg"))
continue; }
}
}
}
int iItem = InsertItem(&lvItem);
if (iItem >= 0)
{
// Set columns:
const int nColumns = m_wndHeader.GetItemCount();
for (int iColumn = 0; iColumn < nColumns; iColumn++)
{
CString s = OnGetItemText(iItem, iColumn, pItem);
SetItemText(iItem, iColumn,s );
}
}
dwFetched = 0;
}
pEnum->Release();
}
return hRes;
}

More Related Content

PPTX
Loop control structure
PDF
Open GL Tutorial10
DOCX
Quinto Punto Parte B
PPT
StackArray stack3
PDF
5 c control statements looping
PPTX
งานนำเสนอ อาจารย์ลาวัลย์
DOCX
Primer Punto
Loop control structure
Open GL Tutorial10
Quinto Punto Parte B
StackArray stack3
5 c control statements looping
งานนำเสนอ อาจารย์ลาวัลย์
Primer Punto

What's hot (20)

PPTX
Loops in c language
DOCX
Jarmo van de Seijp Shadbox ERC223
PDF
Rcpp11 genentech
PDF
BeepBeep 3: A declarative event stream query engine (EDOC 2015)
ODP
PPT
Fuction call
PPTX
Decision statements in c language
PPT
S torage class in C
DOCX
Metnum
ODP
Parsec
PPSX
C lecture 3 control statements slideshare
PPTX
Mcrl2 by kashif.namal@gmail.com, adnanskyousafzai@gmail.com
PDF
2Bytesprog2 course_2014_c5_pointers
PPTX
Circular linked list
PPTX
Programming ppt files (final)
Loops in c language
Jarmo van de Seijp Shadbox ERC223
Rcpp11 genentech
BeepBeep 3: A declarative event stream query engine (EDOC 2015)
Fuction call
Decision statements in c language
S torage class in C
Metnum
Parsec
C lecture 3 control statements slideshare
Mcrl2 by kashif.namal@gmail.com, adnanskyousafzai@gmail.com
2Bytesprog2 course_2014_c5_pointers
Circular linked list
Programming ppt files (final)
Ad

Similar to 참고 코드(Shelllilst filtering) (20)

PPTX
Потоки в перле изнутри
PDF
Creating windows store java script apps
PDF
Proxy OOP Pattern in PHP
PDF
Php7 hashtable
PDF
This is the main file include itemh include itemList.pdf
PDF
Introduction to ATS plugins
PDF
Refactoring to symfony components
PDF
In this lab, you will be given a simple code for a min Heap, and you.pdf
PDF
#include iostream #includeData.h #includePerson.h#in.pdf
PDF
CODE#include stdlib.h #include stdio.hstruct task{proce.pdf
DOCX
__MACOSX._assign3assign3.DS_Store__MACOSXassign3._.D.docx
PDF
implement the ListLinked ADT (the declaration is given in ListLinked.pdf
PDF
Asynchronous java script
PDF
I wrote the following change it to having a header, main and cpp fi.pdf
PDF
Data structures stacks
DOCX
Game unleashedjavascript
PDF
In C++Add the function min as an abstract function to the classar.pdf
PDF
AnswerNote LinkedList.cpp is written and driver program main.cpp.pdf
PDF
I need help with the 2nd TODO comment and the other comments Ill.pdf
DOCX
#ifndef MYLIST_H_ #define MYLIST_H_#includeiostream #include.docx
Потоки в перле изнутри
Creating windows store java script apps
Proxy OOP Pattern in PHP
Php7 hashtable
This is the main file include itemh include itemList.pdf
Introduction to ATS plugins
Refactoring to symfony components
In this lab, you will be given a simple code for a min Heap, and you.pdf
#include iostream #includeData.h #includePerson.h#in.pdf
CODE#include stdlib.h #include stdio.hstruct task{proce.pdf
__MACOSX._assign3assign3.DS_Store__MACOSXassign3._.D.docx
implement the ListLinked ADT (the declaration is given in ListLinked.pdf
Asynchronous java script
I wrote the following change it to having a header, main and cpp fi.pdf
Data structures stacks
Game unleashedjavascript
In C++Add the function min as an abstract function to the classar.pdf
AnswerNote LinkedList.cpp is written and driver program main.cpp.pdf
I need help with the 2nd TODO comment and the other comments Ill.pdf
#ifndef MYLIST_H_ #define MYLIST_H_#includeiostream #include.docx
Ad

참고 코드(Shelllilst filtering)

  • 1. HRESULT CMyShellListCtrl::EnumObjects(LPSHELLFOLDER pParentFolder, LPITEMIDLIST pidlParent) { ASSERT_VALID(this); ASSERT_VALID(afxShellManager); LPENUMIDLIST pEnum; HRESULT hRes = pParentFolder->EnumObjects(NULL, m_nTypes, &pEnum); if (SUCCEEDED(hRes)) { LPITEMIDLIST pidlTemp; DWORD dwFetched = 1; LPAFX_SHELLITEMINFO pItem; //enumerate the item's PIDLs while (pEnum->Next(1, &pidlTemp, &dwFetched) == S_OK && dwFetched) { LVITEM lvItem; ZeroMemory(&lvItem, sizeof(lvItem)); //fill in the TV_ITEM structure for this item lvItem.mask = LVIF_PARAM | LVIF_TEXT | LVIF_STATE; //AddRef the parent folder so it's pointer stays valid pParentFolder->AddRef(); //put the private information in the lParam pItem = (LPAFX_SHELLITEMINFO)GlobalAlloc(GPTR, sizeof(AFX_SHELLITEMINFO)); pItem->pidlRel = pidlTemp; pItem->pidlFQ = afxShellManager->ConcatenateItem(pidlParent, pidlTemp); pItem->pParentFolder = pParentFolder; lvItem.lParam = (LPARAM)pItem; lvItem.pszText = _T(""); int n = GetItemCount(); lvItem.iImage = OnGetItemIcon(n, pItem); //determine if the item is shared DWORD dwAttr = SFGAO_FOLDER | SFGAO_DISPLAYATTRMASK;// SFGAO_FOLDER pParentFolder->GetAttributesOf(1, (LPCITEMIDLIST*)&pidlTemp, &dwAttr); if (dwAttr & SFGAO_SHARE) { lvItem.mask |= LVIF_STATE; lvItem.stateMask |= LVIS_OVERLAYMASK; lvItem.state |= INDEXTOOVERLAYMASK(1); //1 is the index for the shared overlay image } if (dwAttr & SFGAO_GHOSTED) { lvItem.mask |= LVIF_STATE; lvItem.stateMask |= LVIS_CUT; lvItem.state |= LVIS_CUT; }
  • 2. if (dwAttr & SFGAO_FOLDER) { //zipÀº À©µµ¿ì¿¡¼± Æú´õ·Î °£ÁֵDZ⠶§¹®¿¡ ¿©±â¼ ó¸®ÇØ¾ß ÇÔ. } else { SHFILEINFO sfi; TCHAR szPath [MAX_PATH]; if (SHGetPathFromIDList(pItem->pidlFQ, szPath)) { CFileStatus fs; if (CFile::GetStatus(szPath, fs)) { CString s = szPath; int n = s.ReverseFind('.'); if(n!=-1) { s = s.Mid(n+1); s.MakeLower(); if(s != _T("jpg")) continue; } } } } int iItem = InsertItem(&lvItem); if (iItem >= 0) { // Set columns: const int nColumns = m_wndHeader.GetItemCount(); for (int iColumn = 0; iColumn < nColumns; iColumn++) { CString s = OnGetItemText(iItem, iColumn, pItem); SetItemText(iItem, iColumn,s ); } } dwFetched = 0; } pEnum->Release(); } return hRes; }