Nouveau dossier avec SHBrowseForFolder(BROWSEINFO)

progrima Messages postés 125 Date d'inscription lundi 1 novembre 2004 Statut Membre Dernière intervention 4 janvier 2006 - 9 oct. 2005 à 03:10
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 10 oct. 2005 à 00:06
salut!!!
j'utilise la fonction SHBrowseForFolder(BROWSEINFO bi) pour avoir une boite de dialogue qui me permet de séléctionner un dossier de mon disque dur.
le prob c ke je veux avoir la possibilité de créer un nouveau dossier, pour cela je pnse ke je devrai ajouter bi.ulFlags = BIF_NEWDIALOGSTYLE;
mais ca ne fonctionne pas avec visual 6.0
est ce que quelqu'un pourrait m'aider????

7 réponses

Zootella Messages postés 252 Date d'inscription vendredi 10 juin 2005 Statut Membre Dernière intervention 5 septembre 2006
9 oct. 2005 à 03:18
CoInitialize ( NULL ); avant SHBrowseForFolder();
0
progrima Messages postés 125 Date d'inscription lundi 1 novembre 2004 Statut Membre Dernière intervention 4 janvier 2006
9 oct. 2005 à 03:45
c'est ce que j'ai trouvé aussi sur internet, mais j'arrive pas à l'utiliser correctement.
voilà ce que j'ai fait comme code:
bool result = false;
LPMALLOC pMalloc;
if (::SHGetMalloc(&pMalloc) == NOERROR)
{
BROWSEINFO bi;
LPITEMIDLIST pidl;

bi.hwndOwner = GetSafeHwnd();
bi.pidlRoot = NULL;
bi.pszDisplayName = tmpFolder;
bi.lpszTitle = _T("Sélectionner dossier :");
bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS;
bi.ulFlags BIF_VALIDATE; bi.lpfn NULL;
bi.lParam = 0;
if ((pidl = ::SHBrowseForFolder(&bi)) != NULL)
{
result = ::SHGetPathFromIDList(pidl, tmpFolder);
pMalloc->Free(pidl);
}
pMalloc->Release();
return result;
}
return result;
0
Zootella Messages postés 252 Date d'inscription vendredi 10 juin 2005 Statut Membre Dernière intervention 5 septembre 2006
9 oct. 2005 à 13:06
int SelectDir( char szPath[MAX_PATH+1] )

{



BROWSEINFO bi;

ITEMIDLIST *il;

char Buffer[MAX_PATH];



bi.hwndOwner=NULL;

bi.pidlRoot=NULL;

bi.pszDisplayName=&Buffer[0];

bi.lpszTitle="Titre...";

bi.ulFlags=BIF_NEWDIALOGSTYLE;

bi.lpfn=NULL;

if( (il=SHBrowseForFolder(&bi)) ==NULL ) return 0;

return SHGetPathFromIDList(il, &szPath[0]);

}
0
progrima Messages postés 125 Date d'inscription lundi 1 novembre 2004 Statut Membre Dernière intervention 4 janvier 2006
9 oct. 2005 à 14:18
le problème c'est en compilant avec visual 6.0, j'ai l'erreur BIF_NEWDIALOGSTYLE undeclared identifier.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 oct. 2005 à 15:12
SELECTEUR DE DOSSIER (WIN32)
http://www.cppfrance.com/code.aspx?id=17138

Zootella > faut libérer la mémoire allouée par SHGetPathFromIDList.

ciao...
BruNews, MVP VC++
0
progrima Messages postés 125 Date d'inscription lundi 1 novembre 2004 Statut Membre Dernière intervention 4 janvier 2006
9 oct. 2005 à 23:39
je voulais dire merci mais cela ne répond pas à ma demande, en fait je peux créer une boite de dialogue, mais je veux y ajouter la possibilité d'ajouter un nouveau dossier par l'utilisateur.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
10 oct. 2005 à 00:06
CreateDirectory()

sinon:
BIF_NEWDIALOGSTYLE = 0x40

ciao...
BruNews, MVP VC++
0
Rejoignez-nous