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 :

rafraichir une FormView depuis MainFrame


Sujet :

MFC

  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 rafraichir une FormView depuis MainFrame
    Bonjour,

    dans mon projet j'ai plusieurs CFormView qui s'affichent en fonction du menu qu'on sélectionne.
    J'aimerai pouvoir rafraichir ma vue depuis ma CMainFrame... mais je n'y arrive pas ça fait plusieurs semaines que je bug dessus quelqu'un pourrait m'aider?

    dans mon MainFrame j'initialise les vue.
    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
     
    void CMainFrame::InitDonnees()
    {
     
    	//Matières
    	//CMatieres * viewMatieres = new CMatieres();
     
    	viewMatieres = (CView *)new CMatieres();
    	//viewMatieres = new CMatieres();
     
    	viewMatieres->Create(NULL, NULL, 0L, CFrameWnd::rectDefault, this,
    	1, NULL);
     
    	//professeurs
    	viewProfesseurs = (CView *)new CBeanProfesseur();
    	viewProfesseurs->Create(NULL, NULL, 0L, CFrameWnd::rectDefault, this,
    	2, NULL);
     
    	//prof->InitDonnees();
     
    	//Organismes
    	viewOrganismes = (CView *)new COrganismes();
    //viewOrganismes = new COrganismes();
    	viewOrganismes->Create(NULL, NULL, 0L, CFrameWnd::rectDefault, this,
    	3, NULL);
     
     
    	//Disponibilites
    	viewDisponibilites = (CView *)new CDisponibilites();
    	viewDisponibilites->Create(NULL, NULL, 0L, CFrameWnd::rectDefault, this,
    	4, NULL);
     
    }
    et au clic sur un menu je change la vue tjs mainFrame)
    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
     
    void CMainFrame::SelectView(UINT ViewID)
    {
    	CView* pOldActiveView= GetActiveView();
    	CView* pNewActiveView;
     
    	switch(ViewID)
    	{
    	case 1:
    		pNewActiveView =viewMatieres;// (CView*)new CMatieres();
    		break;
    	case 2:
    		pNewActiveView = viewProfesseurs;//(CView*)new CProfesseurs();
     
    		break;
    	case 3:
    		pNewActiveView = viewOrganismes;//(CView*)new COrganismes();
    		break;
    	case 4:
    		pNewActiveView = viewDisponibilites;//(CView*)new CDisponibilites();
    		break;
    	default:
    		AfxMessageBox("Identificateur de vue invalide");
    	return;
    	}
     
    //	pNewActiveView->Create(NULL, NULL, 0L, CFrameWnd::rectDefault, this,
    //	ViewID, NULL);
     
     
    	SetActiveView(pNewActiveView);
    	pOldActiveView->ShowWindow(SW_HIDE);
    	pNewActiveView->ShowWindow(SW_SHOW);
    	pOldActiveView->SetDlgCtrlID(m_CurrentViewID);
    	pNewActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
    	m_CurrentViewID = ViewID;
    	RecalcLayout();
    }
    mais j'aimerai, au moment de l'affichage rafraichir la vue...parce que les données ont pu être modifiées...

    quelqu'un sait?

    merci!

  2. #2
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 526
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 526
    Par défaut
    Salut,
    dans la classe CMainFrame il faut obtenir un pointeur sur la classe CDocument du projet avec CFrameWnd :: GetActiveDocument()
    Puis utiliser CDocument :: GetNextView

    http://msdn.microsoft.com/en-US/libr...=VS.80%29.aspx

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // This example uses CDocument::GetFirstViewPosition
    // and GetNextView to repaint each view.
    void CMyDoc::OnRepaintAllViews()
    {
       POSITION pos = GetFirstViewPosition();
       while (pos != NULL)
       {
          CView* pView = GetNextView(pos);
          pView->UpdateWindow();
       }   
    }
     
    // An easier way to accomplish the same result is to call
    // UpdateAllViews(NULL);
    puisque c'est une CFormView qui hérite d'une CView il faut faire un cast ou utiliser GetRuntimeClass.
    Je vais te mettre un exemple de mon projet d'éditeur que j'ai fait pour mon jeu..

Discussions similaires

  1. rafraichir une page depuis JQuery
    Par pacifiquement dans le forum ASP.NET
    Réponses: 6
    Dernier message: 08/02/2012, 17h09
  2. Rafraichir l'ancre d'une page depuis l'url
    Par tupac25 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/12/2011, 10h32
  3. Réponses: 2
    Dernier message: 02/08/2011, 17h03
  4. Rafraichir un Jmenu depuis une autre class
    Par Jose.N70 dans le forum Composants
    Réponses: 2
    Dernier message: 27/06/2009, 14h40
  5. rafraichir page parent depuis une pop up
    Par yanchasp dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/08/2006, 09h09

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