Pb avec GetSaveFileName

melkiorlenecrarque Messages postés 97 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 20 janvier 2008 - 16 juil. 2004 à 19:18
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 - 16 juil. 2004 à 21:32
voici une partie de mon code:

void sauver(int i)
{
ZeroMemory(&sauve, sizeof(sauve));

sauve.lStructSize = sizeof(OPENFILENAME);
sauve.hwndOwner = hDlg;
sauve.hInstance = NULL;
sauve.lCustData = NULL;
sauve.lpfnHook = NULL;
sauve.lpstrCustomFilter = NULL;
sauve.lpstrDefExt = "*.*";
sauve.lpstrFile = buf;
sauve.lpstrFileTitle = NULL;
sauve.lpstrFilter = "Fichier texte (*.txt)\0*.txt\0";
sauve.lpstrInitialDir = NULL;
if(i == 1)
sauve.lpstrTitle = "joueur 1 sauve ton personnage dans...";
else
sauve.lpstrTitle = "joueur 2 sauve ton personnage dans...";
sauve.lpTemplateName = NULL;

sauve.nFileExtension = NULL;
sauve.nFileOffset = NULL;
sauve.nFilterIndex = 1;
sauve.nMaxCustFilter = NULL;
sauve.nMaxFile = NULL;
sauve.Flags = OFN_EXPLORER|OFN_PATHMUSTEXIST|OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT;
sauve.nMaxFileTitle = NULL;

GetSaveFileName(&sauve);
}

précision:
avec hDlg le HANDLE de ma boite de dialogue principale
et OPENFILENAME variable globale

le pb:
la boite de dialgue "sauver sous..." ne souvre pas! rien ne se passe lorsque j'appuie sur le boutton qui execute la fonction

je suis sur que l'erreur est toute bête, mais sa m'échappe totalmant!! merci pour votre aide !

3 réponses

DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
16 juil. 2004 à 19:45
AU lieu de chercher l'erreur , voici un exemple de fonction qui te permet de sauvegarder. Tu as plus qu'a comparer les deux pour voir d'ou peut provenir le probleme:

bool SaveFile()
{
OPENFILENAME ofn;
char File[MAX_PATH];

ZeroMemory(File,sizeof(File));

ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = GetActiveWindow();
ofn.hInstance = GetModuleHandle(NULL);
ofn.lpstrFilter = "Fichiers de configuration\0*.cfg\0Tous les fichiers\0*.*\0\0";
ofn.lpstrCustomFilter = NULL;
ofn.nMaxCustFilter = NULL;
ofn.nFilterIndex = 0;
ofn.lpstrFile = File;
ofn.nMaxFile = sizeof(File);
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = NULL;
ofn.lpstrInitialDir = NULL;
ofn.lpstrTitle = "Sauvegarder le script de configuration sous...";
ofn.Flags = OFN_HIDEREADONLY;
ofn.nFileOffset = NULL;
ofn.nFileExtension = NULL;
ofn.lpstrDefExt = "*.txt";
ofn.lCustData = NULL;
ofn.lpfnHook = NULL;
ofn.lpTemplateName = NULL;

if( !GetSaveFileName( &ofn ) )
return false;
return true;
}

Shell
0
melkiorlenecrarque Messages postés 97 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 20 janvier 2008
16 juil. 2004 à 20:36
bon voila je vous remercie: cette partie marche nickel! mais 2nd pb!!!!!

voici le code:

if( !GetSaveFileName( &sauve ) )
MessageBox(hDlg, "Erreur lors de la création de la boite de dialogue.", "Erreur", MB_OK|MB_ICONEXCLAMATION);
dw =0; // DWORD déclarée en global
data = "mess à écrire"; // char* data;
file = CreateFile(strcat(buf, "*.txt"), GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); // HANDLE file;
if( file == NULL)
MessageBox(hDlg, "Erreur lors de la création du fichier.", "Erreur", MB_OK|MB_ICONEXCLAMATION);
int e = WriteFile(file, data, 15, &dw, NULL);
if( e ==0)
MessageBox(hDlg, "Erreur lors de l'écriture dans le fichier.", "Erreur", MB_OK|MB_ICONEXCLAMATION);
return true;

é bien sur g le mess "Erreur lors de l'écriture dans le fichier." é pa de fichier crée, meme s'il existe !!!!
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
16 juil. 2004 à 21:32
passe directement buf en 1er param de CreateFile (sans rajouter "*.txt" ??)
0
Rejoignez-nous