[VC++] GetOpenFileName()

GetOpenFileName() [VC++] - Programmation

Marsh Posté le 04-02-2002 à 15:41:11    

Je veux faire une fonction qui permet de recuperer un nom de fichier. J'ai fait ca :
......
    OPENFILENAME ofn;
    char szFileName[260];
    char szFileTitle[80];
    HWND hwnd = m_hWnd;
     
     
    ZeroMemory(&ofn, sizeof(OPENFILENAME));
    ofn.lStructSize = sizeof(ofn);
    ofn.hwndOwner = hwnd;
    ofn.hInstance = NULL;
    ofn.lpstrFile = szFileName;
    ofn.nMaxFile = sizeof(szFileName);
    ofn.lpstrFilter = "Tous\0*.*\0Images Bitmap\0*.BMP\0";
    ofn.lpstrTitle = "Ouvrir une image...";
    ofn.nFilterIndex = 1;
    ofn.lpstrFileTitle = szFileTitle;
    ofn.nMaxFileTitle = sizeof(szFileTitle);
    ofn.lpstrInitialDir = NULL;
    ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_NOCHANGEDIR;
    ofn.lpstrDefExt = "bmp";
 
    if (GetOpenFileName(&ofn)){
       .......
 
Ca compile, mais la boite de dialogue ne s'affiche pas, et  
CommDlgExtendedError() renvoie CDERR_INITIALIZATION.
 
J'ai rien trouve dans l'aide pour expliquer cette erreur, alors si quelqu'un avait une idee....
 
Merci d'avance.

Reply

Marsh Posté le 04-02-2002 à 15:41:11   

Reply

Marsh Posté le 04-02-2002 à 18:00:46    

Et ben, personne trouve ?
 
Bon, ben up alors !

Reply

Marsh Posté le 04-02-2002 à 18:06:30    

Euh si tu es sous VC++ et que tu utilises les MFC, un petit CFileDialog non ?


---------------
VT ... Vaucluse / Vrille(euse :sarcastic: ) c'est pareil tant qu'il y a l'humour :D
Reply

Marsh Posté le 04-02-2002 à 20:21:10    

Au niveau de l'instance tu dois pas filer l'instance de l'application ?


---------------
Super.
Reply

Marsh Posté le 04-02-2002 à 21:03:51    

chez moi aussi ca plante :??:  
meme les exemples de MSDN et pi les "vieux" exemple fourni avec le bookin de Petzold ( qui fonctionnait bien )
 
ca m'interresse tout ca...


---------------
What butter and whiskey won't cure, there is no cure for.
Reply

Marsh Posté le 04-02-2002 à 21:10:37    

CDialogFile File();
File.Open(_les_options_);
CString strPath = File.GetPathName();
 
 
pkoi se prendre le choux ?? autant utiliser MFC!

Reply

Marsh Posté le 04-02-2002 à 21:32:20    

ton filter me semble pas bon
 
ofn.lpstrFilter = "Tous\0*.*\0Images Bitmap\0*.BMP\0";
 
il faut que ca se finisse par un double \0 (\0\0 donc)
 
dans tous les ca vala un bout de code qui marchez chez moi :
 

Code :
  1. static TCHAR strInitialDir[512];
  2. static TCHAR strFileName[512];
  3. static TCHAR strCurrentName[512];
  4. OPENFILENAME ofnExe = { sizeof(OPENFILENAME), hWnd, 0,
  5.         "executable Files (*.Exe)\0*.exe\0\0",
  6.         NULL, 0, 1, strCurrentName, 512, strFileName, 512,
  7.         strInitialDir, "Open",OFN_EXPLORER|OFN_FILEMUSTEXIST, 0, 1,
  8.         "exe", 0, NULL, NULL };
  9. GetOpenFileName( &ofnExe );

Reply

Marsh Posté le 05-02-2002 à 13:01:27    

Godbout a écrit a écrit :

Au niveau de l'instance tu dois pas filer l'instance de l'application ?  




 
L'instance de l'application est obligatoire quand on hooke la feuille de dialogue. Si on hooke pas, NULL convient très bien.

Reply

Sujets relatifs:

Leave a Replay

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