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

MFC Discussion :

Utilisation de variables globales en MFC


Sujet :

MFC

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 213
    Points : 58
    Points
    58
    Par défaut Utilisation de variables globales en MFC
    Je sais que l'utilisation de variables globales n'est pas recommandé.

    Je ss face au probleme suivant.
    J'ai une IHM en MFC de type Dialog base.
    J'ai des variables définies en public dans le fichier.h de la premiere boite de dialogue.
    J'ai une seconde boite de dialogue qui utilise les mêmes variables.

    Je ne sais où les définirs.
    J'ai déja utiliser des variables sur différents Docs en passant par la classe Document en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GetDocument()->maVariable
    ; mais la je ne sais pas trop comment faire.

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    pourquoi ne pas mettre tout ca dans la classe d'application ? après, tu y accèdes grace au pointeur d'application

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 213
    Points : 58
    Points
    58
    Par défaut
    Je n'ai pas trop d'experience. Je ne sais pas ce qu est la classe d'application.

    Il y a ds la Faq un sujet sur Comment récupérer le pointeur sur l’application? mais je ne comprends pas vraiment.

    Faut il que je creer une nouvelle classe?

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    tu dois avoir une classe qui dérive de CWinApp

    et faire un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CMyApp*pTheApp = static_cast<CMyApp*>(AfxGetApp());
    pTheApp->membrePubliqueDefiniDansCMyApp = ...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 213
    Points : 58
    Points
    58
    Par défaut
    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
    class CWinApp : public CWinThread
    {
        DECLARE_DYNAMIC(CWinApp)
    public:
     
    // Constructor
        CWinApp(LPCTSTR lpszAppName = NULL);     // app name defaults to EXE name
     
    // Attributes
        // Startup args (do not change)
        HINSTANCE m_hInstance;
        HINSTANCE m_hPrevInstance;
        LPTSTR m_lpCmdLine;
        int m_nCmdShow;
     
        // Running args (can be changed in InitInstance)
        LPCTSTR m_pszAppName;  // human readable name
                                    //  (from constructor or AFX_IDS_APP_TITLE)
        LPCTSTR m_pszRegistryKey;   // used for registry entries
        CDocManager* m_pDocManager;
     
        // Support for Shift+F1 help mode.
        BOOL m_bHelpMode;           // are we in Shift+F1 mode?
     
    public:  // set in constructor to override default
        LPCTSTR m_pszExeName;       // executable name (no spaces)
        LPCTSTR m_pszHelpFilePath;  // default based on module path
        LPCTSTR m_pszProfileName;   // default based on app name
    Dois je definir mes variables ici?

    Et ensuite j 'accederai au variables avec
    AfxGetApp()->m_lpCmdLine

  6. #6
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    tu dois plutot avoir une classe qui hérite de CWinApp (dans un .h qui doit porter le nom de ton projet)
    c'est ici que tu pourras mettre tes variables

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 213
    Points : 58
    Points
    58
    Par défaut
    OK merci.

    J'ai bien défini mes variables dans le fichier monprojet.h
    Comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class CmonprojetApp : public CWinApp
    {
    public:
    Cstring m_variables;
    .....
    Ensuite je les utilise en faisant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CmonprojetApp *pTheApp= static_cast<CmonprojetApp*>(AfxGetApp());
    pTheApp->m_variables;
    Merci encore

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

Discussions similaires

  1. Utiliser des variables globales
    Par jujudrogba dans le forum Delphi .NET
    Réponses: 4
    Dernier message: 10/02/2007, 11h02
  2. Réponses: 5
    Dernier message: 31/05/2006, 12h39
  3. [sql] comment utiliser une variable global
    Par imedg dans le forum Oracle
    Réponses: 21
    Dernier message: 02/05/2006, 15h21
  4. Réponses: 6
    Dernier message: 07/04/2006, 01h10
  5. utilisation des variables global dans tout le projet
    Par EYENGA Joël dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 12/01/2006, 10h55

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