Copyright © 2013
3. Okno - "Przegladanie w poszukiwaniu folderu".  [C++Builder XE4] [09.11.2013]
Aby wyswietlic okno "Przegladanie w poszukiwaniu folderu" nalezy urzyc funkcji SHBrowseForFolder(). Jako argument funkcja przyjmuje strukture:

typedef struct _browseinfo {
HWND              hwndOwner;
PCIDLIST_ABSOLUTE pidlRoot;
LPTSTR            pszDisplayName;
LPCTSTR           lpszTitle;
UINT              ulFlags;
BFFCALLBACK       lpfn;
LPARAM            lParam;
int               iImage;
}BROWSEINFO, *PBROWSEINFO, *LPBROWSEINFO;

Zmienna  ulFlags moze przyjac nastepujace wartosci:
BIF_RETURNONLYFSDIRS
BIF_DONTGOBELOWDOMAIN
BIF_STATUSTEXT
BIF_RETURNFSANCESTORS
BIF_EDITBOX
BIF_VALIDATE
BIF_NEWDIALOGSTYLE
BIF_BROWSEINCLUDEURLS
BIF_USENEWUI
BIF_UAHINT
BIF_NONEWFOLDERBUTTON
BIF_NOTRANSLATETARGETS
BIF_BROWSEFORCOMPUTER
BIF_BROWSEFORPRINTER
BIF_BROWSEINCLUDEFILES
BIF_SHAREABLE
BIF_BROWSEFILEJUNCTIONS

Przyklad:

#include "Shlobj.h" 

//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
BROWSEINFO bi;
memset(&bi, 0, sizeof(bi)); //Wypelnia kolejne bajty w pamieci ustalona wartoscia.

//bi.hwndOwner = NULL;
//bi.ulFlags   = BIF_USENEWUI;
bi.lpszTitle = L"PRZYKLADOWY TYTUL";

LPITEMIDLIST pIDL = SHBrowseForFolder(&bi);

if(pIDL != NULL)
{
wchar_t buffer[_MAX_PATH] = {0};
if(SHGetPathFromIDList(pIDL, buffer) != 0)
{
Edit1->Text= buffer;
}
}
}
//---------------------------------------------------------------------------
Znajdz na stronie: