OPENFILENAME recuperation du chemin

youpiyoyo Messages postés 539 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 14 juillet 2010 - 7 mars 2004 à 14:44
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 - 7 mars 2004 à 23:27
j'aurai deux questions:

*1ère:

je sais qu'il est possible d'ouvrir une boite de dlg pour ouvrir un dossier. Comment fait on? il me semble que c des param dans OPENFILENAME et que l'ouvre avec GetOpenFileName

*2eme:

sinon j'aimerai pouvoir recup le chemin d'un fichier de szFile
ex:
C:\WINDOWS\TEST\toto.jpg

j'aimerai recup c:\windows\test
meci d'avance

6 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 mars 2004 à 14:46
Mes sources ont nombreux exemples de ces 2 cas.

ciao...
BruNews, Admin CS, MVP Visual C++
0
youpiyoyo Messages postés 539 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 14 juillet 2010
7 mars 2004 à 14:56
ok merci mais....

et d'une tu as bcp de source donc c dur d'en trouver un comme exemple.

et de deux, par exemple j'ai pris pour exemple
COPIEUR DE DOSSIERS (WIN32)

c a peu pres ce que je veux mais j'ai pas suivis comment tu fais
as tu une maniere plus simple

merci d'avance
0
youpiyoyo Messages postés 539 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 14 juillet 2010
7 mars 2004 à 14:58
c le descriptif de bnSelectDir
qu'il me faudrait
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 mars 2004 à 15:04
Je me sers de ma dll dans la source dont tu parles, tu peux utiliser aussi.
Voici du + simple, enleve partie dont tu ne voudrais pas.

int dlgSelectDir(char* pszDirSel, const char* pszTitle)
{ // #include <Shlobj.h>
char szTmp[MAX_PATH], c;
BROWSEINFO BI;
int len = 0;
LPMALLOC pMalloc;
memset(&BI,0,sizeof(BROWSEINFO)); BI.hwndOwner hDlg; BI.lpszTitle pszTitle;
BI.ulFlags = BIF_RETURNONLYFSDIRS | BIF_DONTGOBELOWDOMAIN;
BI.pszDisplayName = szTmp;
LPITEMIDLIST lpItemLst = SHBrowseForFolder(&BI);
if(lpItemLst == NULL) return 0;
if(SHGetPathFromIDList(lpItemLst, szTmp)) { c szTmp[3]; szTmp[3] 0;
if(GetDriveType(szTmp) != DRIVE_FIXED) {
MsgExcla(hDlg, "Le dossier cible doit se trouver sur disque dur local");
goto funcRet;
}
szTmp[3] = c; strcpy(pszDirSel, szTmp);
len = strlen(pszDirSel);
if(pszDirSel[len - 1] != '\\') {pszDirSel[len++] = '\\'; pszDirSel[len] = 0;}
}
funcRet:
if(SUCCEEDED(SHGetMalloc(&pMalloc))) {pMalloc->Free(lpItemLst); pMalloc->Release();}
return len;
}

ciao...
BruNews, Admin CS, MVP Visual C++
0

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

Posez votre question
youpiyoyo Messages postés 539 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 14 juillet 2010
7 mars 2004 à 15:10
ouai plus simple, lol...

mais BROWSEINFO c pas pour avoir des info sur un dossier???

je pensai faire un OPENFILENAME

car il me semble qu'il y a une possibilité de faire comme ton bnSelectDir
qui est dans une de t lib SelDirFile

qui est deja fais dans la prog win32
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
7 mars 2004 à 23:27
char szFileName[_MAX_PATH];
OPENFILENAME ofn;
memset(&ofn, 0, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hWnd;
ofn.lpstrFilter = "tout fichier(*.*)\0*.*\0";
ofn.nFilterIndex = 1;
ofn.lpstrFile = szFileName;
ofn.nMaxFile = _MAX_PATH;
ofn.lpstrTitle = "titre";
ofn.Flags = OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST | OFN_HIDEREADONLY |OFN_LONGNAMES;

// si aucun nom de fichier n'a été sélectionné, on abandonne
if(!GetOpenFileName(&ofn))
return;

pour la réponse à la 2ème question : soit tu parcours ta chaîne à partie de la fin à la recherche du \ ou tu utilise les fonctions de shlwapi.h (shlwapi.lib) PathFindFileName et autre

ou bien splitpath
0
Rejoignez-nous