Index   Commented   Search   About

Browsing for Folders

The following example uses the SHBrowseForFolder function to prompt the user for a program group. The Programs directory is specified as the root.

// Main_OnBrowse - browses for a program folder.

// hwnd - handle of the application's main window

//

// Uses the global variable g_pMalloc, which is assumed to point

// to the shell's IMalloc interface.

  • oid Main_OnBrowse(HWND hwnd)

{

BROWSEINFO bi;

LPSTR lpBuffer;

LPITEMIDLIST pidlPrograms; // PIDL for Programs folder

LPITEMIDLIST pidlBrowse; // PIDL selected by user

// Allocate a buffer to receive browse information.

if ((lpBuffer = (LPSTR) g_pMalloc->lpVtbl->Alloc(

g_pMalloc, MAX_PATH)) == NULL)

return;

// Get the PIDL for the Programs folder.

if (!SUCCEEDED(SHGetSpecialFolderLocation(

hwnd, CSIDL_PROGRAMS, &pidlPrograms))) {

g_pMalloc->lpVtbl->Free(g_pMalloc, lpBuffer);

return;

}

// Fill in the BROWSEINFO structure.

bi.hwndOwner = hwnd;

bi.pidlRoot = pidlPrograms;

bi.pszDisplayName = lpBuffer;

bi.lpszTitle = "Choose a Program Group";

bi.ulFlags = 0;

bi.lpfn = NULL;

bi.lParam = 0;

// Browse for a folder and return its PIDL.

pidlBrowse = SHBrowseForFolder(&bi);

if (pidlBrowse != NULL) {

// Show the display name, title, and file system path.

MessageBox(hwnd, lpBuffer, "Display name", MB_OK);

if (SHGetPathFromIDList(pidlBrowse, lpBuffer))

SetWindowText(hwnd, lpBuffer);

// Free the PIDL returned by SHBrowseForFolder.

g_pMalloc->lpVtbl->Free(g_pMalloc, pidlBrowse);

}

// Clean up.

g_pMalloc->lpVtbl->Free(g_pMalloc, pidlPrograms);

g_pMalloc->lpVtbl->Free(g_pMalloc, lpBuffer);

}

Related Links

Software for Delphi and C++ Builder developers
Software for Visual Studio .NET developers
Software for Visual Basic 6 developers
Delphi Tips&Tricks
MegaDetailed.NET

More Online Helps

Win32 Multimedia Programmer's Reference (mmedia.hlp)
OLE Programmer's Reference (ole.hlp)
Microsoft Windows Pen API Programmer's Reference (penapi.hlp)
Microsoft Windows Sockets 2 Reference (sock2.hlp)
Microsoft Windows Telephony API (TAPI) Programmer's Reference (tapi.hlp)
Unix Manual Pages

Free Tech Secrets ;) Copyright © 2008 Free Tect Secrets ;) greatis just4fun network just4fun