Getoenfilename -> ???

Résolu
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009 - 12 oct. 2006 à 23:02
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 13 oct. 2006 à 08:40
salut,
sur une source (http://www.cppfrance.com/code.aspx?ID=28478)
j'ai extrait une fonction de la librairy créé et ais essayé de la faire fonctioner, mais cela ne marche pas.
voyez vous une fautes ( dans mes variables parceque je ne sais pas tro quoi déclarer...) :

#include "file.h"

// mes initialisations de variables



char *extension [500];
char * descriptiontype [500];
HWND windowhandle;
bool VIEWERROR=0;


// la fonction :



int FILEOpenStandardDialogBoxOpenFile(char *extension, char* descriptiontype, HWND windowhandle, BOOL VIEWERROR)
{
 char *fichierouvrir, *buffer;
 int handle, i;
 OPENFILENAME ofn;       //Structure pour ouvrir la boite de dialogue "Ouvrir un fichier..."



 fichierouvrir = (char*) calloc(FILESIZEBUFFER, sizeof(char));
 buffer = (char*) calloc(FILESIZEBUFFER, sizeof(char));
 // Initialisation de la structure OPENFILENAME
 ZeroMemory(&ofn, sizeof(OPENFILENAME));
 ofn.lStructSize = sizeof(OPENFILENAME);
 ofn.hwndOwner = windowhandle;
 ofn.lpstrFile = fichierouvrir;
 ofn.nMaxFile = FILESIZEBUFFER;
 //on doit creer une chaine du type: "descriptiontype\0extension"
 buffer = strcat(buffer, descriptiontype);
 handle = strlen(buffer) + 1;
 for (i = 0; i < 5 && *(extension + i) != '\0'; i++)
  buffer[handle + i] = *(extension + i);
 ofn.lpstrFilter = buffer;
 ofn.nFilterIndex = 1;
 ofn.lpstrFileTitle = NULL;
 ofn.lpstrTitle = strcat(FILETITREOPEN, extension);
 ofn.nMaxFileTitle = 0;
 ofn.lpstrInitialDir = _getcwd(NULL, FILESIZEBUFFER);
 ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
 //Création de la fenètre d'ouverture d'un fichier
 if (GetOpenFileName(&ofn) == TRUE)
 {
  if (handle = FILEOpen(fichierouvrir, VIEWERROR) != -1)
  {
   LocalFree(fichierouvrir);
   return handle;
  }
 }
 LocalFree(fichierouvrir);
 return -1;
}


 

5 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 oct. 2006 à 02:19
char szfile[300];

BOOL __stdcall dlgFileOpen(HWND hOwner)
{
  OPENFILENAME ofn;
  char szroot[4];
  ofn.lStructSize = sizeof(OPENFILENAME);
  ofn.hInstance = 0;
  ofn.hwndOwner = hOwner;
  ofn.lpstrFilter = "*.*\0*.*\0\0";
  ofn.lpstrFile = szfile;  ofn.lpstrCustomFilter ofn.lpstrFileTitle 0;  ofn.nFileExtension ofn.nFileOffset 0;  ofn.lCustData ofn.dwReserved 0;  ofn.lpTemplateName ofn.lpstrInitialDir ofn.lpstrDefExt = 0;
  ofn.lpfnHook = 0;
  ofn.pvReserved = 0;  ofn.nFileExtension ofn.nFileExtension 0;  ofn.nMaxCustFilter ofn.nMaxFileTitle 0;
  ofn.FlagsEx = OFN_EX_NOPLACESBAR;
  ofn.nFilterIndex = 1;
  ofn.nMaxFile = MAX_PATH;
  ofn.lpstrTitle = szappname;
  ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_NOCHANGEDIR | OFN_DONTADDTORECENT;
  szfile[0] = 0;
  return GetOpenFileName(&ofn);
}

Pas de ZeroMemory() qui ferait la moitié de saboucle inutilement.
Ouvre le fichier hors de ce sélecteur, il ne faut pas tout mélanger si on veut avoir des fonctions réutilisables aisément.

ciao...
BruNews, MVP VC++
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 oct. 2006 à 08:40
3
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
12 oct. 2006 à 23:03
merci d'avance !

@+
0
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
13 oct. 2006 à 07:45
super merci !
quelquesquestions :
la fonction renvoie le nom du fichier ouvert par l'user et -1 pour une erreur ?
je doit juste initialiser une variable ?
HWND hOwner = szfile ?
le prototipe sera BOOL __stdcall dlgFileOpen(HWND hOwner); ??

merci d'avance !
@+
0

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

Posez votre question
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
13 oct. 2006 à 07:46
a oui, et ou est ce que l'on met les extension que l'utilisateur pourra ouvrir ?
0
Rejoignez-nous