Click here to Skip to main content
15,906,947 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: Sort Pin
valikac18-Mar-03 8:49
valikac18-Mar-03 8:49 
GeneralRe: Sort Pin
Chris Meech18-Mar-03 8:57
Chris Meech18-Mar-03 8:57 
GeneralHelp! Pin
Dennis L18-Mar-03 6:59
Dennis L18-Mar-03 6:59 
GeneralRe: Help! Pin
AlexO18-Mar-03 7:39
AlexO18-Mar-03 7:39 
GeneralRe: Help! Pin
Anonymous18-Mar-03 9:20
Anonymous18-Mar-03 9:20 
GeneralRe: Help! Pin
AlexO18-Mar-03 10:29
AlexO18-Mar-03 10:29 
GeneralRe: Help! Pin
Anonymous18-Mar-03 9:21
Anonymous18-Mar-03 9:21 
GeneralShell Namespace Pin
Ana Lucia18-Mar-03 6:41
Ana Lucia18-Mar-03 6:41 
Hi,

I would like to know why calling the function 'MySHEnumFolderContent( "c:\",SHCONTF_FOLDERS | SHCONTF_NONFOLDERS | SHCONTF_INCLUDEHIDDEN,NULL, 0 )' multiple times, the number of pages currently resident in memory (memory usage) always grows up (I used the Windows XP Task Manager to measure the memory usage)?

Confused | :confused:
Thanks,

Ana



int MySHEnumFolderContent( LPSHELLFOLDER pFolderPai,
LPITEMIDLIST pItem,
DWORD dwFlags,
FOLDERCONTENTPROC pfn /*= NULL*/,
LPARAM lParam /*= 0*/,
LPITEMIDLIST* ppidl /*= NULL*/ )
{
int NumItens = -1;

LPSHELLFOLDER pFolder = NULL;

HRESULT hr = pFolderPai->BindToObject( pItem, 0,
IID_IShellFolder,(LPVOID *)&pFolder );

if ( SUCCEEDED( hr ) )
{
LPENUMIDLIST pEnumIDList = NULL;

hr = pFolder->EnumObjects( NULL, dwFlags, &pEnumIDList );

if ( SUCCEEDED( hr ) )
{
LPMALLOC pMalloc = NULL;
LPITEMIDLIST pidl = NULL;

SHGetMalloc( &pMalloc );

NumItens = 0;

while ( pEnumIDList->Next( 1, &pidl, NULL ) == S_OK )
{
if ( pfn != NULL && !pfn( pFolder, pidl, lParam ) )
{
// Returns the current PIDL
if ( ppidl != NULL )
*ppidl = pidl;

break;
}
NumItens++;
pMalloc->Free( pidl );
pidl = NULL;
}
pMalloc->Release();
pEnumIDList->Release();
}
pFolder->Release();
}
return ( NumItens );
}

/*---------------------------------------------------------------------------*/
int MySHEnumFolderContent( LPCTSTR pNomeFolder,
DWORD dwFlags,
FOLDERCONTENTPROC pfn /*= NULL*/,
LPARAM lParam /*= 0*/,
LPITEMIDLIST* ppidl /*= NULL*/ )
{
int NumItens = -1;

LPSHELLFOLDER pDesktopFolder = NULL;

// Get an IShellFolder interface pointer
HRESULT hr = SHGetDesktopFolder( &pDesktopFolder );

if ( SUCCEEDED( hr ) )
{
LPITEMIDLIST pItem = NULL;

hr = MySHPathToPIDL( pNomeFolder, &pItem, pDesktopFolder );

if ( SUCCEEDED( hr ) )
{
LPMALLOC pMalloc = NULL;

NumItens = MySHEnumFolderContent( pDesktopFolder, pItem, dwFlags, pfn, lParam, ppidl );

SHGetMalloc( &pMalloc );
pMalloc->Free( pItem );
pMalloc->Release();
}
pDesktopFolder->Release();
}
return ( NumItens );
}

/*----------------------------------------------------------------------------*/
HRESULT MySHPathToPIDL( CString szPath, LPITEMIDLIST *ppidl,
LPSHELLFOLDER pFolder /*= NULL*/ )
{
HRESULT hr;
LPSHELLFOLDER pShellFolder = NULL;
OLECHAR wszPath[ MAX_PATH ] = { 0 };
ULONG nCharsParsed = 0;
BOOL bFreeOnExit = FALSE;

// Use the desktop's IShellFolder by default
if ( pFolder == NULL )
{
hr = SHGetDesktopFolder( &pShellFolder );

if ( FAILED( hr ) )
return ( hr );

bFreeOnExit = TRUE;
}
else
pShellFolder = pFolder;

if( szPath.Right( 1 ) == ':' )
szPath += "\\";

// Convert the path name to Unicode
MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, szPath, -1, wszPath, MAX_PATH );

// Call ParseDisplayName() to do the job
hr = pShellFolder->ParseDisplayName( NULL, NULL, wszPath,
&nCharsParsed, ppidl, NULL );

// Clean up
if ( bFreeOnExit )
pShellFolder->Release();

return hr;
}
Generalchanging an int to a _variant_t Pin
Chris Eatough18-Mar-03 6:20
Chris Eatough18-Mar-03 6:20 
GeneralRe: changing an int to a _variant_t Pin
Ian Darling18-Mar-03 6:35
Ian Darling18-Mar-03 6:35 
GeneralRe: changing an int to a _variant_t Pin
Chris Eatough18-Mar-03 6:37
Chris Eatough18-Mar-03 6:37 
GeneralHeader of files !!! Pin
ZarrinPour18-Mar-03 6:19
ZarrinPour18-Mar-03 6:19 
GeneralRe: Header of files !!! Pin
User 665818-Mar-03 8:01
User 665818-Mar-03 8:01 
GeneralOpening Word Doc files Pin
Madmaximus18-Mar-03 5:46
Madmaximus18-Mar-03 5:46 
GeneralRe: Opening Word Doc files Pin
Phil Boyd18-Mar-03 16:36
Phil Boyd18-Mar-03 16:36 
GeneralRe: Opening Word Doc files Pin
Madmaximus19-Mar-03 6:31
Madmaximus19-Mar-03 6:31 
GeneralRe: Opening Word Doc files Pin
Phil Boyd19-Mar-03 7:01
Phil Boyd19-Mar-03 7:01 
QuestionForcing a page fault? Pin
Jim A. Johnson18-Mar-03 5:07
Jim A. Johnson18-Mar-03 5:07 
GeneralAdding header file to a precompiled header Pin
actarusgoldrake18-Mar-03 5:06
actarusgoldrake18-Mar-03 5:06 
GeneralRe: Adding header file to a precompiled header Pin
Brian Shifrin18-Mar-03 6:16
Brian Shifrin18-Mar-03 6:16 
GeneralRe: Adding header file to a precompiled header Pin
Rick York18-Mar-03 6:44
mveRick York18-Mar-03 6:44 
QuestionHow do I send a message from ... Pin
LittleYellowBird18-Mar-03 4:38
LittleYellowBird18-Mar-03 4:38 
AnswerRe: How do I send a message from ... Pin
Brian Shifrin18-Mar-03 5:04
Brian Shifrin18-Mar-03 5:04 
GeneralWxWindows Pin
fravid18-Mar-03 4:36
fravid18-Mar-03 4:36 
GeneralDocumentation on using internet explorer as user interface Pin
roel_18-Mar-03 4:16
roel_18-Mar-03 4:16 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.