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 21040 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 26
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 26
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 26
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 26
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 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 déc. 2006 à 20:47
OFN_NOCHANGEDIR

ciao...
BruNews, MVP VC++
0
Rejoignez-nous