Parcourir les répertoires SHBrowseForFolder()

Le
Roger
Bonjour,
Pour parcourir les répertoires et laisser l'utilisateur en choisir un, j'ai
utilisé la fonction SHBrowseForFolder() de l'API Windows qui est dans
<shlobj.h>. Le problème c'est que pour savoir quel répertoire l'utilisateur
a choisi, j'ai besoin de connaître non seulement le répertoire terminal
choisi, mais aussi le chemin qui y mène à ce répertoire terminal. Or dans la
structure BROWSEINFO browse; au paramètre: browse.pszDisplayName qui
contient un pointeur sur le répertoire choisi, je n'obtiens que le
répertoire terminal choisi, sans le chemin complet !!
Question: y a-t-il un moyen de paramétrer la structure pour obtenir le
chemin complet ou faut-il utiliser une autre fonction ?
Merci.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
CriCri
Le #23461081
Salut

Roger a écrit :

Question: [snip] ...faut-il utiliser une autre fonction ?



Vi :

BROWSEINFO bInfo;
LPITEMIDLIST pIdl;
TCHAR pszPath[ MAX_PATH ];

if ( ! ( pidl = SHBrowseForFolder( &bInfo ) )
|| ! SHGetPathFromIDList( pIdl, pszPath ) )
erreur()...


Cdlt
CC

--
bitwyse [PGP KeyID 0xA79C8F2C]
http://www.le-maquis.net
C'est comme au CNRS: des chercheurs qui cherchent on en trouve
mais des chercheurs qui trouvent on en cherche.
Christian ASTOR
Le #23460831
Roger a écrit :
Bonjour,
Pour parcourir les répertoires et laisser l'utilisateur en choisir un, j'ai
utilisé la fonction SHBrowseForFolder() de l'API Windows qui est dans
a choisi, j'ai besoin de connaître non seulement le répertoire terminal
choisi, mais aussi le chemin qui y mène à ce répertoire terminal. Or dans la
structure BROWSEINFO browse; au paramètre: browse.pszDisplayName qui
contient un pointeur sur le répertoire choisi, je n'obtiens que le
répertoire terminal choisi, sans le chemin complet !!
Question: y a-t-il un moyen de paramétrer la structure pour obtenir le
chemin complet ou faut-il utiliser une autre fonction ?
Merci.



Par exemple =>

BROWSEINFO bi = { 0 };
bi.lpszTitle = "Choix d'un répertoire";
bi.ulFlags = BIF_NEWDIALOGSTYLE;
LPITEMIDLIST pidl = SHBrowseForFolder(&bi);
if (pidl != 0)
{
char sPath[MAX_PATH], sBuffer[MAX_PATH];
if (SHGetPathFromIDList (pidl, sPath))
{
sprintf(sBuffer, "Répertoire : %sn", sPath);
MessageBox(NULL, sBuffer, "Information", MB_OK | MB_ICONINFORMATION);
}
}
Roger
Le #23462111
Merci à tous les deux,
J'avais trouvé seul la fonction SHBrowseForFolder, par contre je n'avais pas
bien compris l'utilisation de LPITEMIDLIST, de plus je n'avais pas trouvé la
fonction SHGetPathFromIDList et enfin le flag BIF_NEWDIALOGSTYLE n'existe
pas dans mon win32.hlp, celui-là je n'aurais pas pu l'inventer. Vous m'avez
permis de gagner beaucoup de temps !
A propos de mon win32.hlp sa dernière modification est du 26/11/1996, je
suppose qu'il existe quelque part des versions plus récentes.
Merci.

Christian ASTOR
Le #23462301
Roger a écrit :

A propos de mon win32.hlp sa dernière modification est du 26/11/1996, je
suppose qu'il existe quelque part des versions plus récentes.



Oui, dans le Windows SDK

Par exemple pour le Shell, c'est le fichier d'aide
ShellCC.chm
ou
ShellCC.hxs (avec un hxs viewer)
Roger
Le #23462901
A propos de mon win32.hlp sa dernière modification est du 26/11/1996, je
suppose qu'il existe quelque part des versions plus récentes.



Oui, dans le Windows SDK



Merci, mais euh, c'est quoi le Windows SDK ? (question probablement très
bête)
Publicité
Poster une réponse
Anonyme