SHBrowseForFolder()

Résolu
Signaler
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
-
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
-
Salut a tous,

voila une fonction que j'ai écrite, qui permet de selectionner un répertoire:



// fonction qui permet de sélectionner un dossier

char *OpenFolder(HWND hWnd)

{

BROWSEINFO bi; // choix d'un répertoire

char folder[MAX_PATH]; // dossier selectionné



// initialisation du composant

bi.hwndOwner = hWnd;

bi.pidlRoot = 0;

bi.pszDisplayName = folder;

bi.lpszTitle = "Sélection d'un répertoire ...";

bi.ulFlags = BIF_NEWDIALOGSTYLE;

bi.lpfn = 0;

bi.lParam = 0;



// retourne le répertoire

return(SHBrowseForFolder(&bi));

}


mais j'ai des erreurs de compilation. que je ne sais comment résoudre
sur les deux instructions suivante:
'bi.pszDisplayName folder;' 'bi.lpszTitle "Sélection d'un
répertoire ...";'

je travaille sous VS2005.
Bob...

"La chance accorde ses faveur aux esprits avertis..."

4 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
SHBrowseForFolder() retourne un LPITEMIDLIST qu'il convient de libérer si fonction réussit, par contre ne retourne pas un *char.

bi.pszDisplayName = folder;
aucune raison que fasse erreur, vient surement de plus haut dans le code.

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Tu dois être en proj UNICODE, faut utiliser TCHAR au lieu de char.

Exemple ANSI ici, change le type des params pour ton proj:
SELECTEUR DE DOSSIER (WIN32)
http://www.cppfrance.com/code.aspx?id=17138

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
12
comment je fais pour récup le chemin dossier selectionner, car j'ai pas trop compris ce qui été écrit dans la MSDN à savoir:
The display name of the object selected is returned in the buffer pointed to by the pszDisplayName member of the BROWSEINFO parameter structure.

ensuite pour:
bi.pszDisplayName = folder;
bi.lpszTitle = "Sélection d'un répertoire ...";

voici les erreurs du compilo:
Error 1 error C2440: '=' : cannot convert from 'char [260]' to 'LPWSTR' c:\Documents and Settings\LordBob\Mes documents\Visual Studio 2005\Projects\ExtName\ExtName\Listing.cpp 22

Error 2 error C2440: '=' : cannot convert from 'const char [30]' to 'LPCWSTR' c:\Documents and Settings\LordBob\Mes documents\Visual Studio 2005\Projects\ExtName\ExtName\Listing.cpp 23


je sais bien que normalement, il ne devrait pas y avoir d'erreur pourtant, le compilo m'indique bien 2 erreurs de convertion !
Bob...

"La chance accorde ses faveur aux esprits avertis..."
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
12
ok merci beaucoup!
Bob...

"La chance accorde ses faveur aux esprits avertis..."