[MFC] Recherche de repertoire dans l'arborescence complète
Salut,
j'ai un problème sur un dialogue de choix de repertoire. J'utilise ce code pour faire apparaitre une fenetre de choix de répertoire :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| LPMALLOC pMalloc;
// Gets the Shell's default allocator
if (::SHGetMalloc(&pMalloc) == NOERROR)
{
BROWSEINFO bi;
char pszBuffer[MAX_PATH];
LPITEMIDLIST pidl;
// Get help on BROWSEINFO struct - it's got all the bit settings.
bi.hwndOwner = GetSafeHwnd();
bi.pidlRoot = ConvertPathToLpItemIdList("C:\\");
bi.pszDisplayName = pszBuffer;
bi.lpszTitle = _T("Select a Starting Directory");
bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS | BIF_SHAREABLE;
bi.lpfn = NULL;
bi.lParam = 0;
// This next call issues the dialog box.
if ((pidl = ::SHBrowseForFolder(&bi)) != NULL)
{
if (::SHGetPathFromIDList(pidl, pszBuffer))
{
// At this point pszBuffer contains the selected path */.
// TODO DoingSomethingUseful(pszBuffer);
}
// Free the PIDL allocated by SHBrowseForFolder.
pMalloc->Free(pidl);
}
// Release the shell's allocator.
pMalloc->Release();
} |
le problème est que le choix des répertoire commence au niveau de C:\ (bi.pidlRoot = ConvertPathToLpItemIdList("C:\\");) sans possibilité de revenir sur un autre disque dur. Si le pidlRoot a un sous répertoire c'est le meme probleme on n'arrive pas à remonter dans l'arborescence.
Est ce que quelqu'un aurait une solution pour résoudre mon prob (sachant que je dois pouvoir sélectionner un certain répertoire par défaut à l'affichage du dialogue)
Merci
PS: Mon topic peut paraitre semblable à un autre topic que j'ai ouvert mais le problème n'est pas le meme