SHBrowseForFolder()

Résolu
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 - 26 janv. 2006 à 22:02
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 - 26 janv. 2006 à 23:57
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

BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
26 janv. 2006 à 23:17
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++
3
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
26 janv. 2006 à 23:50
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++
3
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
26 janv. 2006 à 23:37
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..."
0
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
26 janv. 2006 à 23:57
ok merci beaucoup!
Bob...

"La chance accorde ses faveur aux esprits avertis..."
0
Rejoignez-nous