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 :

initialisation d'une vue


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2009
    Messages : 164
    Par défaut initialisation d'une vue
    Bonjour,

    je débute sur un projet en MFC est j'ai quelques problèmes.

    J'ai créé un projet SDI dans lequel j'ai un menu "référentiel" qui contient "professeur" et "salles". lorsque je clique sur professeur, la vue attribué a professeur s'affiche et quand je clique sur salles c'est la vue attribuée à salles qui s'affiche. Jusque là c'est bon, mais à chaque fois ça crée une nouvelle vue "CProfesseur" et "CSalles" et du coup toutes les données que j'aurai renseigné auront disparu.

    Je cherche donc a initialiser 1 seule vue Professeur et 1 seule vue Classe, qui safficherai au clique des bouton (et non un nouveau).
    Et c'est la que je bug je n'arrive pas a initialiser ces classes.

    Mon code:

    dans mon MainFrame.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // Attributs
    public:
    	CProfesseur professeurView; 
    	CSalles salleView;
    	int m_CurrentViewID;
    dans mon MainFrame.cpp
    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
     
    CMainFrame::CMainFrame()
    {
    	// TODO: ajoutez ici le code d'une initialisation de membre
    	professeurView = new CProfesseur();
    	salleView = new CSalles();
    }
     
    (...)
     
    // gestionnaires de messages pour CMainFrame
    void CMainFrame::SelectView(UINT idView)
    {
     
    	CView* pOldActiveView= GetActiveView();
    	CView* pNewActiveView;
     
    	switch(idView)
    	{
    		case 1:
    			pNewActiveView = professeurView;//(CView*)new CProfesseur();
    		break;
    		case 2:
    			pNewActiveView = salleView;//(CView*)new CSalles();
    		break;
    		default:
    		//	AfxMessageBox("Identificateur de vue invalide");
    		return;
    	}
     
    (...)
    }

    erreur qui s'affiche:

    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
     
    1>  projet.cpp
    1>c:\users\léa\documents\visual studio 2010\projects\projetc++\projet\mainfrm.h(16): error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'professeurView'
    1>c:\users\léa\documents\visual studio 2010\projects\projetc++\projet\mainfrm.h(16): error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    1>c:\users\léa\documents\visual studio 2010\projects\projetc++\projet\mainfrm.h(16): error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    1>c:\users\léa\documents\visual studio 2010\projects\projetc++\projet\mainfrm.h(17): error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'salleView'
    1>c:\users\léa\documents\visual studio 2010\projects\projetc++\projet\mainfrm.h(17): error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    1>c:\users\léa\documents\visual studio 2010\projects\projetc++\projet\mainfrm.h(17): error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    1>  MainFrm.cpp
    1>c:\users\léa\documents\visual studio 2010\projects\projetc++\projet\mainfrm.h(16): error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'professeurView'
    1>c:\users\léa\documents\visual studio 2010\projects\projetc++\projet\mainfrm.h(16): error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    1>c:\users\léa\documents\visual studio 2010\projects\projetc++\projet\mainfrm.h(16): error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    1>c:\users\léa\documents\visual studio 2010\projects\projetc++\projet\mainfrm.h(17): error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'salleView'
    1>c:\users\léa\documents\visual studio 2010\projects\projetc++\projet\mainfrm.h(17): error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    1>c:\users\léa\documents\visual studio 2010\projects\projetc++\projet\mainfrm.h(17): error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    1>c:\users\léa\documents\visual studio 2010\projects\projetc++\projet\mainfrm.cpp(39): error C2065: 'professeurView'*: identificateur non déclaré
    1>c:\users\léa\documents\visual studio 2010\projects\projetc++\projet\mainfrm.cpp(40): error C2065: 'salleView'*: identificateur non déclaré
    1>c:\users\léa\documents\visual studio 2010\projects\projetc++\projet\mainfrm.cpp(99): error C2065: 'professeurView'*: identificateur non déclaré
    1>c:\users\léa\documents\visual studio 2010\projects\projetc++\projet\mainfrm.cpp(102): error C2065: 'salleView'*: identificateur non déclaré
    1>  Génération de code en cours...
    est-ce que quelqu'un pourrait m'aider?

    Merci

    Léa

  2. #2
    Membre confirmé
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2009
    Messages : 164
    Par défaut
    bon j'ai réussi à initialiser professeurView et salleView

    MainFrame.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // Attributs
    public:
    	CProfesseur * professeurView;
    	CSalles * salleView;
    MainFrame.cpp
    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
     
    int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
    		return -1;
     
    	if (!m_wndStatusBar.Create(this))
    	{
    		TRACE0("Impossible de créer la barre d'état\n");
    		return -1;      // échec de la création
    	}
    	m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));
     
     
    		professeurView = new CProfesseur();
    		salleView = new CSalles();
     
    	return 0;
    }
    Mais ça ne change rien ça créer toujours une nouvelle vue..
    je pense que c'est a cause de cette partie :

    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
    void CMainFrame::SelectView(UINT idView)
    {
    CView* pOldActiveView= GetActiveView();
    	CView* pNewActiveView;
    
    	switch(idView)
    	{
    		case 1:
    			pNewActiveView = /*(CView*)new CProfesseur(); //*/professeurView;
    		break;
    		case 2:
    			pNewActiveView = /*(CView*)new CSalles();//*/salleView;
    		break;
    		default:
    		//	AfxMessageBox("Identificateur de vue invalide");
    		return;
    	}
    	pNewActiveView->Create(NULL, NULL, 0L, CFrameWnd::rectDefault, this,
    	idView, NULL);
    	SetActiveView(pNewActiveView);
    	pOldActiveView->ShowWindow(SW_HIDE);
    	pNewActiveView->ShowWindow(SW_SHOW);
    	pOldActiveView->SetDlgCtrlID(m_CurrentViewID);
    	pNewActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
    	m_CurrentViewID = idView;
    	RecalcLayout();
    
    }
    mais je n'arrive pas modifier... je n'arrive pas a changer la vue et a revenir après sans l'effacer...

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

Discussions similaires

  1. Ré initialiser une vue
    Par mikaoul dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 09/06/2007, 00h49
  2. [DEBUTANT] Une vue dans une procedure stockee ?
    Par Invité dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/02/2004, 11h57
  3. [TADOTable] reconnaitre le trigger INSTEAD OF d'une vue...
    Par littledoudou dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/12/2003, 12h39
  4. Export d'une vue avec LEFT JOIN
    Par schnourf dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/05/2003, 13h57
  5. Créer une vue pour trier une requete UNION ?
    Par Etienne Bar dans le forum SQL
    Réponses: 3
    Dernier message: 03/01/2003, 20h22

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