probleme avec GetOpenFileName() sous Visual C++

probleme avec GetOpenFileName() sous Visual C++ - Programmation

Marsh Posté le 10-04-2001 à 09:27:22    

Je crée une structure OPENFILENAME test; et j'initialise les champs comme ci dessous :
 
 test.Flags = OFN_ALLOWMULTISELECT ;
 char Filtre[22] = "BITMAP FILE *.BMP  ";
 Filtre[11] = 0;
 Filtre[17] = 0;
 Filtre[18] = 0;
 
 test.lpstrFilter = Filtre;
 test.lpstrTitle = "CHARGER";
 
 test.lStructSize = sizeof(test);
 
Et puis je fais à un moment donné dans mon programme un GetOpenFileName. Cela marche, je peux choisir un fichier, mais apres une fois que 'lutilisateur appuie sur OK, la chaine indiquat le chemin choisi (test.lpstrFile) et celle contenant le nom du fichier (test.lpstrFileTitle) ne sont pas initialisées.
 
Est ce que qqun maitrise, j'ai rien trouvé sur MSDN...

Reply

Marsh Posté le 10-04-2001 à 09:27:22   

Reply

Marsh Posté le 10-04-2001 à 12:44:33    

c'est normal t un blaireau
lol

Reply

Marsh Posté le 11-04-2001 à 23:53:26    

Cela devrait répondre à ta question:
 
BOOL FileOpen (HWND hwnd,char *filename)
{
 OPENFILENAME ofn ;
 
 char szFilter[] = "Dossiers\0..\0"  \
                                 "Tous les fichiers (*.*)\0*.*\0\0" ;
 
 ofn.lStructSize       = sizeof (OPENFILENAME) ;
 ofn.hwndOwner         = hwnd ;
 ofn.hInstance         = NULL ;
 ofn.lpstrFilter       = szFilter ;
 ofn.lpstrCustomFilter = NULL ;
 ofn.nMaxCustFilter    = 0 ;
 ofn.nFilterIndex      = 0 ;
 ofn.nMaxFile          = _MAX_PATH ;
 ofn.nMaxFileTitle     = _MAX_FNAME + _MAX_EXT ;
 ofn.lpstrInitialDir   = NULL ;
 ofn.lpstrTitle        = NULL ;
 ofn.nFileOffset       = 0 ;
 ofn.nFileExtension    = 0 ;
 ofn.lpstrDefExt       = "txt" ;
 ofn.lCustData         = 0L ;
 ofn.lpfnHook          = NULL ;
 ofn.lpTemplateName    = NULL ;
 
 ofn.lpstrFile         = filename;
 ofn.lpstrFileTitle    = NULL;
 ofn.Flags             = OFN_HIDEREADONLY | OFN_CREATEPROMPT ;
 
 return GetOpenFileName(&ofn);
}
 
Avec ce bout de code normalement ça marche (enfin ça marche pour moi.
 
Voila

Reply

Marsh Posté le 12-04-2001 à 08:39:50    

merci slashp, mais apres pour recuperer le nom et le chemin, pas facile, et est ce que tu maitrise le SHBrowseForFolder ?

Reply

Marsh Posté le 12-04-2001 à 10:03:47    

Pour faire un browse folder utiliser la fct suivante:
 
BOOL BrowseFolder(HWND hwnd,char *directory)
{
 BROWSEINFO browse;
 LPITEMIDLIST itemidlist;
 
 browse.hwndOwner=hwnd;
 browse.pszDisplayName=directory;
 browse.lpszTitle=NULL;
 browse.ulFlags=BIF_EDITBOX;
 browse.lpfn=NULL;
 browse.lParam=0;
 browse.pidlRoot=NULL;
 
 if ((itemidlist=SHBrowseForFolder(&browse))==NULL)
  return 0;
 if (SHGetPathFromIDList(itemidlist,directory)==NULL)
  return 0;
 strcat(directory,"\\" ); //rajoute un slash à la fin du chemin du dossier
 return 1;
}
 
Voila...

Reply

Marsh Posté le 12-04-2001 à 10:11:38    

pouah, encore une fois merci, je vais tester ca tout de suite sans plus tarder !!!!!!!!!!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed