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 :

Passage de paramètre d'une fenetre a une autre


Sujet :

MFC

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 29
    Points : 17
    Points
    17
    Par défaut Passage de paramètre d'une fenetre a une autre
    Je souhaiterai creer une fenetre de type CFormView qui s'ouvrirai a partir de la view de mon appli SDI: Comment faire? et comment passer les param que je veux à la nouvelle fenetre.

    D'autre part je souhaiterai hériter d'une listbox aafin d'utiliser l'évènement click droit, or j'ai beau créer une classe CMyListBox faire un getdlg(IDC_LIST1) ou IDC_LIST1 est ma listbox je n'obtiens pas les evenements supplémentaires (par contre les evt de base fonctionnent.)


    Merci

    jpdar

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    mauvais depart si ton appli est SDI (single document interface ) -> implique une seule vue un document .
    sinon il faut generer un projet MDI et la tu peux avoir autant de vue que tu veux (ou presque ).
    si tu as fait une classe derivée de CListBox il faut l'associer a un control par classwizard (onglet member variables avec classwizard)
    ta phrase :
    [quote]
    or j'ai beau créer une classe CMyListBox faire un getdlg(IDC_LIST1) ou IDC_LIST1 est ma listbox je n'obtiens pas les evenements supplémentaires (par contre les evt de base fonctionnent.)
    GetDlgItem donne acces au controle pas aux evenements que celui ci gere.

  3. #3
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    Salut

    On peut toujours changer de vue avec une application SDI en créeant d'abord un formulaire à l'aide de l'éditeur de ressource puis on l'associe à une classe qui dérive bien de CFormView. Ensuite en créeant des ID une pour la vue principale comme ID_MAINVIEW=1 et d'autres comme ID_FORMVIEW1=2, ID_FORMVIEW2=3, etc
    Et enfin en définissant une fonction de sélection de vue dans le CMainFrame comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     void CMainFrame::SelectView(UINT ViewID)
    Il s'agit au fait de switcher d'une vue à une autre

    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
    void CMainFrame::SelectView(int ViewID) 
    { 
        CView* pOldActiveView = GetActiveView(); 
        CView* pNewActiveView = static_cast<CView*>( GetDlgItem(ViewID) ); 
     
        if(pNewActiveView == NULL) 
        { 
             switch(ViewID) 
             { 
       case ID_FORMVIEW1: 
       pNewActiveView = new CFormView1(); 
       break; 
     
       case ID_FORMVIEW2: 
       pNewActiveView = new CFormView2(); 
       break; 
     
                   case ID_FORMVIEW3: 
       pNewActiveView = new CFormView3(); 
       break; 
     
       default: 
        AfxMessageBox("ID de vue invalide"); 
       return; 
               } 
     
           CCreateContext context; 
           context.m_pCurrentDoc = pOldActiveView->GetDocument(); 
           pNewActiveView->Create(NULL, NULL, 0L, CFrameWnd::rectDefault, this, ViewID, &context); 
           pNewActiveView->OnInitialUpdate();
         } 
     
         SetActiveView(pNewActiveView); 
         pOldActiveView->ShowWindow(SW_HIDE); 
         pNewActiveView->ShowWindow(SW_SHOW); 
         pOldActiveView->SetDlgCtrlID(m_CurrentViewID); 
         pNewActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST); 
         m_CurrentViewID = ViewID; 
         RecalcLayout();    
    }

    Dans la constructeur CMainFrame on commence par la vue principale

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     CMainFrame::CMainFrame() 
    { 
      m_CurrentViewID = ID_MAINVIEW; 
    }

    Gabrielly

Discussions similaires

  1. Réponses: 6
    Dernier message: 28/01/2012, 17h56
  2. transmettre une variable d'une fenetre a une autre
    Par tix116 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 20/02/2009, 10h07
  3. insertion d'une fenetre dans une fenetre
    Par DeeVoiD dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 04/02/2009, 12h56
  4. Problème affichage d'une fenetre dans une fenetre
    Par zuzuu dans le forum Windows
    Réponses: 10
    Dernier message: 03/10/2007, 15h26
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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