Pb avec GetOpenFileName (OFN_ALLOWMULTISELECT)

lapinono Messages postés 8 Date d'inscription mardi 30 mars 2004 Statut Membre Dernière intervention 24 mai 2004 - 24 mai 2004 à 17:15
lapinono Messages postés 8 Date d'inscription mardi 30 mars 2004 Statut Membre Dernière intervention 24 mai 2004 - 24 mai 2004 à 23:52
Bonjour,

Voila j'ai ecris un petit bout de programme pour recuperer et afficher le nom de plusieurs fichiers .dat.
Mais seulement, celui marche pour un fichier (il m'affiche son nom) mais lorsque j'en selectionne 2, il m'affiche comme une adresse de pointeur, enfin pas ce que je voudrais.

OPENFILENAME ouv;
_fmemset(&ouv, 0, sizeof(ouv));
ouv.lStructSize = sizeof(OPENFILENAME);
ouv.hwndOwner=NULL;
ouv.hInstance =NULL;
ouv.lpstrFilter =TEXT("Fichier *.dat \0*.dat\0All Files *.*\0*.*\0\0");
ouv.lpstrCustomFilter = NULL;
ouv.nMaxCustFilter = 0;
ouv.nFilterIndex = 1;
ouv.lpstrFile = NULL;
ouv.nMaxFile = 255;
ouv.lpstrFileTitle = FileNameDATouv;
ouv.nMaxFileTitle = 50;
ouv.lpstrInitialDir = NULL;
ouv.lpstrTitle = "Ouvrir fichier(s) DAT";
ouv.Flags = OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT|OFN_FILEMUSTEXIST|OFN_EXPLORER|OFN_SHOWHELP;
ouv.lpstrDefExt = "DAT";
ouv.lCustData =NULL;
ouv.lpfnHook = NULL;
ouv.lpTemplateName =NULL;
ouv.nFileOffset=0;

GetOpenFileName(&ouv);
char msg[256];
sprintf(msg,"%s %s",FileNameDATouv);
MessageBox(NULL,msg,"Essai",MB_OK);

Si quelqu'un pouvait m'aider, parce que j'ai bien essayé de comprendre dans les autres sujets du forum mais je n'y arrive pas.

Merci d'avance.

Nono

2 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
24 mai 2004 à 22:57
tout d'abord, le nom complet du fichier choisi est stocké dans le champ "ofn.lpstrFile", il faut donc lui fournir un buffer. "ofn.lpstrFileTitle" est optionnel et sert à récupérer le nomù simple et l'extension.

ensuite, les champ "ofn.maxFile" et "ofn.maxFileTitle" doivent correspondre à la taille des buffers fournis dans "ofn.lpstrFile" et "ofn.lpstrFileTille", ce qui n'est pas vraiment le cas dans ton exemple.

Avec le style OFN_ALLOW_MULTISELECT, "ofn.lpstr" contient une suite de chaînes de caractères terminées par un caractère nul '\0'. La dernière chaîne est terminées par 2 nuls.
La première chaîne contient le répertoire et les suivantes les fichiers sélectionnés.

Pour terminer un exemple d'utilisation :
http://www.cppfrance.com/code.aspx?ID=22114
0
lapinono Messages postés 8 Date d'inscription mardi 30 mars 2004 Statut Membre Dernière intervention 24 mai 2004
24 mai 2004 à 23:52
Merci beaucoup!! J'y ai passé une après-midi à essayer de trouver!! (pour l'exemple y'a 2 ou 3 instructions a modifier pour que ca marche sur visual C++)
Encore un grand merci
0
Rejoignez-nous