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 :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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(); }
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
Partager