OPENFILENAME et fichier ini

Résolu
raoulman
Messages postés
40
Date d'inscription
vendredi 14 mars 2003
Statut
Membre
Dernière intervention
21 avril 2007
- 17 déc. 2006 à 12:37
BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
- 17 déc. 2006 à 20:47
Bonjour,

Voilà le problème. J'ai une boîte de dialogue avec plusieurs EditBox et un bouton qui m'ouvre la boîte de dialogue "ouvrir" de Windows en utilisant la structure OPENFILENAME.

Si je remplis des EditBox et que je valide sans appeler la structure OPENFILENAME, je crée un fichier ini qui contient les données de mes EditBox. Par contre, si j'appelle la structure, mon fichier ini ne se crée pas.


Voilà le bout de code concerné



char filtre[] = "Fichiers texte (*.txt)\0*.txt\0", chemin_choisi[MAX_PATH] = {0};

case WM_COMMAND:

switch (LOWORD(wParam)) {

case changer_rep_signature:

OPENFILENAME ofn;

ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = handle_enfant1;
ofn.hInstance = NULL;
ofn.lpstrFilter = filtre;
ofn.lpstrCustomFilter = NULL;
ofn.nMaxCustFilter = NULL;
ofn.nFilterIndex = 1;
ofn.lpstrFile = chemin_choisi;
ofn.nMaxFile = MAX_PATH;
ofn.lpstrTitle = "Ouvrir";
ofn.nMaxFileTitle = NULL;
ofn.lpstrInitialDir = NULL;
ofn.lpstrTitle = NULL;
ofn.Flags = OFN_FILEMUSTEXIST | OFN_LONGNAMES | OFN_PATHMUSTEXIST;
ofn.nFileOffset = NULL;
ofn.nFileExtension = NULL;
ofn.lpstrDefExt = NULL;
ofn.lCustData = NULL;
ofn.lpfnHook = NULL;
ofn.lpTemplateName = NULL;

if (GetOpenFileName (&ofn) != 0) {

SetDlgItemText (handle_enfant1, valeur_signature, chemin_choisi);

}

break;

9 réponses

yann_lo_san
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
23
17 déc. 2006 à 17:43
Oui, apres avoir appelée openFileName fais
SetCurrentDirectory()
3
yann_lo_san
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
23
17 déc. 2006 à 16:25
The last string in the buffer must be terminated by 2 NULL characters :

char filtreTexte[] = "Fichiers texte (*.txt)\0*.txt\0 \0 ";

// OU plusieurs filtres

char filtreTexteEtIni[] = "Fichiers txt + ini (*.txt;*.ini)\0*.txt;*.ini\0\0";
0
raoulman
Messages postés
40
Date d'inscription
vendredi 14 mars 2003
Statut
Membre
Dernière intervention
21 avril 2007
1
17 déc. 2006 à 16:56
Merci pour la correction.

J'apporte quelques détails supplémentaires à mon problème. Une fois le chemin récupéré par ofn.lpstrFilter je l'affiche dans un editbox et ensuite je récupère son contenu pour l'écrire dans un fichier ini. WritePrivateProfileString ne me renvoie pas d'erreurs mais il ne me crée pas pour autant mon fichier ini.

J'ai essayé avec une structure Browseinfo et j'ai pas de problèmes. Je ne comprends pas du tout d'où le problème peut venir.
0
yann_lo_san
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
23
17 déc. 2006 à 17:08
Si le fichier ini n'existe pas au départ, WritePrivateProfileString() le crée dans le repertoire Windows.
0

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

Posez votre question
raoulman
Messages postés
40
Date d'inscription
vendredi 14 mars 2003
Statut
Membre
Dernière intervention
21 avril 2007
1
17 déc. 2006 à 17:17
Exact mais je lui donne un chemin et je sais que mon fichier ini se crée dans le même répertoire que mon programme. Si je n'appelle pas ma structure Openfilename et que je renseigne d'autres editbox j'ai bien mon fichier ini crée avec les données dedans. C'est uniquement quand j'appelle la structure openfilename que mon fichier ini n'est pas crée.

Si tu as une idée
0
yann_lo_san
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
23
17 déc. 2006 à 17:33
Attention, l'openFileName change le rep courant. Alors peut etre ton fichier se crée ailleurs.
0
raoulman
Messages postés
40
Date d'inscription
vendredi 14 mars 2003
Statut
Membre
Dernière intervention
21 avril 2007
1
17 déc. 2006 à 17:40
Alors là j'suis sur le c..!

En effet je l'ai trouvé à la racine de mon lecteur où se trouve mon programme.
Y'a un moyen d'empêcher Openfilename de changer le répertoire courant ?
0
raoulman
Messages postés
40
Date d'inscription
vendredi 14 mars 2003
Statut
Membre
Dernière intervention
21 avril 2007
1
17 déc. 2006 à 17:48
Eh bien j'ai pas perdu ma journée et je me coucherai moins bête ce soir.

Un grand merci à toi yann_lo_san
0
BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
17 déc. 2006 à 20:47
OFN_NOCHANGEDIR

ciao...
BruNews, MVP VC++
0