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;
}
}
}
//---------------------------------------------------------------------------