SHBrowseForFolder ???

Signaler
Messages postés
283
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
4 juillet 2007
-
Messages postés
199
Date d'inscription
lundi 22 juillet 2002
Statut
Membre
Dernière intervention
14 juin 2006
-
SHBrowseForFolder() permet de récupérer le nom d'un dossier qu'aura choisit l'utilisateur... Le seul problème : comment le récupérer ?! Il renvoie bien une valeur, mais celle-ci ne sert à rien... (je pense) Dans l'objet BROWSEINFO associé, on peut définir un buffer (pszDisplayName) pour stocker le nom du répertoire, mais c'est seulement le nom du répertoire sans l'arbre de tous les répertoires supérieurs...

Note : J'ai regardé dans le MSDN ( :) )

CyberP,
Celui qui dit que toute question a une réponse

2 réponses

Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006

Voila comment faire:

// ...

ITEMIDLIST *il=SHBrowseForFolder(&bInfo);

if (!il)
return FALSE;

// On récupére le chemin
char strTmp[MAX_PATH];
SHGetPathFromIDList(il,strTmp);

// On récupére un pointeur vers l'interface IMalloc
IMalloc *iMalloc;
SHGetMalloc(&iMalloc);

// On libère le ITEMIDLIST
iMalloc->Free(il);

// Et le pointeur vers l'interface IMalloc
iMalloc->Release();

Kaid - kaid.fr.st
Messages postés
199
Date d'inscription
lundi 22 juillet 2002
Statut
Membre
Dernière intervention
14 juin 2006

essaye ce code c tout pret :
prototype de la fonction :
int SelectDir( char [] );

int SelectDir( char szPath[MAX_PATH+1] )
{

BROWSEINFO bi;
ITEMIDLIST *il;
char Buffer[MAX_PATH];

bi.hwndOwner=hDlgTool;
bi.pidlRoot=NULL;
bi.pszDisplayName=&Buffer[0];
bi.lpszTitle="Choisissez un répertoire :";
bi.ulFlags=0;
bi.lpfn=NULL;
if( (il=SHBrowseForFolder(&bi)) ==NULL ) return 0;
return SHGetPathFromIDList(il, &szPath[0]);
}

voila avec ça tu pourras récupérer le nom du répertoire sélectionné sans problème :)

Trinita :big)