IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Creation .ini dans les applis sdi et mdi


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 6
    Par défaut Creation .ini dans les applis sdi et mdi
    Bonjour à tous,

    Je viens de m'interesser au fichier .ini, j'ai donc pris le temps de lire la faq ainsi que msdn, sur comment faire pour écrire ou lire un .ini via les MFC. Cependant je rencontre un problème et j'aimerai vous le faire partager. Bon élève programmeur j'ai créé un MFC boite de dialogue tout simple avec les boutons d'origines.
    J'ai renomé le bouton OK (IDOK-> ID_OK) et j'ai créé un fonction liée à ce bouton. J'y ai copié l'exemple type trouvé sur msdn (WriteProfileString). Compilation + test OK j'ai bien un fichier .ini créé dans C:\WINDOWS.

    Maintenant j'ai une application de type MDI et je voulais qu'à l'initialisation de mon application le .ini soit créé. J'ai fait un copier/coller encore une fois de msdn et là compilation OK test NULL, strictement rien est créé.

    J'ai retourné le problème et je n'arrive pas savoir d'où ça peut venir. Je viens de faire un test avec une appli SDI même résultat.

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Poste ton CWinApp::InitInstance

  3. #3
    Membre émérite
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Par défaut
    Citation Envoyé par Tigil Voir le message
    Maintenant j'ai une application de type MDI et je voulais qu'à l'initialisation de mon application le .ini soit créé.
    Où exactement as-tu placé la création du fichier?
    Citation Envoyé par Tigil Voir le message
    J'ai fait un copier/coller encore une fois de msdn et là compilation OK test NULL, strictement rien est créé.
    Peut-on voir le code de l'appel à la création du fichier INI associé?
    Citation Envoyé par MSDN
    The WriteProfileString function copies a string into the specified section of the Win.ini file.
    C'est bien dans le fichier Win.ini que tu veux écrire? Pas dans un autre fichier?

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 6
    Par défaut
    Voici le premier test avec la boite de dialog toute simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    void CMonIniDlg::OnOk() 
    {
    	// TODO: Add your control notification handler code here
    	CString strSection       = "My Section";
       CString strStringItem    = "My String Item";
       CString strIntItem       = "My Int Item";
     
       CWinApp* pApp = AfxGetApp();
     
       pApp->WriteProfileString(strSection, strStringItem, "test");
     
       CString strValue;
       strValue = pApp->GetProfileString(strSection, strStringItem);
       ASSERT(strValue == "test");
     
       pApp->WriteProfileInt(strSection, strIntItem, 1234);
       int nValue;
       nValue = pApp->GetProfileInt(strSection, strIntItem, 0);
       ASSERT(nValue == 1234);
     
    }
    Un fichier "nom de l'appli".ini est créé et se trouve dans C:\WINDOWS

    Voici le deuxieme test avec une appli SDI
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    BOOL CMonIniSDIApp::InitInstance()
    {
    	AfxEnableControlContainer();
     
    	// Standard initialization
    	// If you are not using these features and wish to reduce the size
    	//  of your final executable, you should remove from the following
    	//  the specific initialization routines you do not need.
     
    #ifdef _AFXDLL
    	Enable3dControls();			// Call this when using MFC in a shared DLL
    #else
    	Enable3dControlsStatic();	// Call this when linking to MFC statically
    #endif
     
    	// Change the registry key under which our settings are stored.
    	// TODO: You should modify this string to be something appropriate
    	// such as the name of your company or organization.
    	SetRegistryKey(_T("Local AppWizard-Generated Applications"));
     
    	LoadStdProfileSettings();  // Load standard INI file options (including MRU)
     
    	// Register the application's document templates.  Document templates
    	//  serve as the connection between documents, frame windows and views.
     
    	CSingleDocTemplate* pDocTemplate;
    	pDocTemplate = new CSingleDocTemplate(
    		IDR_MAINFRAME,
    		RUNTIME_CLASS(CMonIniSDIDoc),
    		RUNTIME_CLASS(CMainFrame),       // main SDI frame window
    		RUNTIME_CLASS(CMonIniSDIView));
    	AddDocTemplate(pDocTemplate);
     
    	// Parse command line for standard shell commands, DDE, file open
    	CCommandLineInfo cmdInfo;
    	ParseCommandLine(cmdInfo);
     
    	// Dispatch commands specified on the command line
    	if (!ProcessShellCommand(cmdInfo))
    		return FALSE;
     
    	// The one and only window has been initialized, so show and update it.
    	m_pMainWnd->ShowWindow(SW_SHOW);
    	m_pMainWnd->UpdateWindow();
     
    	/************* Exemple d'emplacement du code */
     
     
    	CString strSection       = "My Section";
       CString strStringItem    = "My String Item";
       CString strIntItem       = "My Int Item";
     
       CWinApp* pApp = AfxGetApp();
     
       pApp->WriteProfileString(strSection, strStringItem, "test");
     
       CString strValue;
       strValue = pApp->GetProfileString(strSection, strStringItem);
       ASSERT(strValue == "test");
     
       pApp->WriteProfileInt(strSection, strIntItem, 1234);
       int nValue;
       nValue = pApp->GetProfileInt(strSection, strIntItem, 0);
       ASSERT(nValue == 1234);
     
    	/**************/
     
    	return TRUE;
    }
    A la finalité ce même code ne crée pas de fichier ini bien que les fonctions Write/GetProfilString et Write/GetProfilInt renvoient pas d'erreur

  5. #5
    Membre émérite
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Par défaut
    Citation Envoyé par spoutspout Voir le message
    A la finalité ce même code ne crée pas de fichier ini bien que les fonctions Write/GetProfilString et Write/GetProfilInt renvoient pas d'erreur
    Tu es bien sûr que l'exemple dans la CDialog crée bien un fichier INI ?
    Citation Envoyé par MSDN
    The entries are stored as follows:
    • In Windows NT, the value is stored to a registry key.
    • In Windows 3.x, the value is stored in the WIN.INI file.
    • In Windows 95/98, the value is stored in a cached version of WIN.INI.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 6
    Par défaut
    Dans la CDialog qui se nomme "monini" dès que j'appuis sur le bouton OK le fichier monini.ini apprait dans le repertoire C:\WINDOWS

    Je me suis même intéressé à renomer m_pszProfileName afin de créer un fichier ini avec le nom et l'emplacement souhaité.

    Par contre dès que je passe sur une appli SDI ou MDI alors là plus rien, alors que j'utilise la même méthode.

  7. #7
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    salut,

    enlève cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SetRegistryKey(_T("Local AppWizard-Generated Applications"));
    car sinon ça va dans la base de registres de Windows...

    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. solution utiluse dans les appli client serveur
    Par taret dans le forum Général Java
    Réponses: 2
    Dernier message: 06/04/2010, 16h45
  2. Organisation des jar dans les applis
    Par -=Spoon=- dans le forum JOnAS
    Réponses: 2
    Dernier message: 06/10/2009, 16h19
  3. Organisation des jar dans les applis
    Par -=Spoon=- dans le forum Général Java
    Réponses: 2
    Dernier message: 24/09/2009, 19h37
  4. [XUL] FireFox 1.5.0.4 ne supporte plus les treeview dans les appli web
    Par ultraboa dans le forum Autres langages pour le Web
    Réponses: 9
    Dernier message: 23/11/2006, 10h52
  5. php.ini dans les détails
    Par berceker united dans le forum Langage
    Réponses: 2
    Dernier message: 20/09/2006, 10h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo