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 :

[MFC]MDI - switcher des documents


Sujet :

MFC

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 35
    Points : 37
    Points
    37
    Par défaut [MFC]MDI - switcher des documents
    Bonjour,

    Je vais essayer d'exposer mon problème.
    Je suis entrain de réaliser une application, en visual c++ 6.0, permettant de paramètrer plusieurs type de matériel. Donc j'utilise une MDI, avec un document par type de matétiel. Chaque document à une seule vue correpondant à un formulaire.
    L'utilisateur n'a le droit d'avoir qu'un document ouvert à la fois.
    Dans mon menu, il choisit le matériel qu'il veut configurer et ça lui ouvre le bon document et ferme celui en cours si besoin est.
    Jusque là tout va bien !

    Le problème est que si j'ai des boutons dans ma vue (genre un bouton OK pour valider le formulaire), je n'arrive pas à recevoir le message comme quoi j'appuie sur ce bouton.
    Petites précisions, chaque vue à sa propre classe à laquelle j'ai associé (mappé) les messages des boutons de la vue.
    Donc j'ai essayé de récupérer la frame contenant la vue et de faire un setActiveView... mais ça ne marche pas.

    Voilà ce que ça donne, en gros, lorsque l'utilisateur choisi un nouveau matériel à configurer :
    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
     
    CMainFrame *frame=(CMainFrame *)AfxGetMainWnd();
    // Je récupère le document courant
    CDocument *currentDoc = frame->GetActiveDocument();
     
    // Je le ferme si il existe
    if(currentDoc != NULL)
    {
        POSITION pos = currentDoc->GetFirstViewPosition();
        CView* pView = currentDoc->GetNextView(pos);
        if(pView)  pView->GetParentFrame()->PostMessage(WM_SYSCOMMAND,SC_CLOSE,0);
    }
     
    //Je récupère le bon CDocTemplate
    // dans la liste des CDocTemplates de l'appication
        CDocTemplate * tpl = GetTemplateAt(MAT1);
    // Je crée le document
        CDocument *newDoc = tpl->OpenDocumentFile(NULL);
     
        POSITION viewPos = newDoc->GetFirstViewPosition();
        CView * newView = newDoc->GetNextView(viewPos);
        CFrameWnd* newFrame = newView->GetParentFrame();
        newFrame->SetActiveView(newView,TRUE);

    J'espère avoir été à peu près clair...
    Merci de m'avoir lu jusque là !!!

  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
    a partir de la :
    Le problème est que si j'ai des boutons dans ma vue (genre un bouton OK pour valider le formulaire), je n'arrive pas à recevoir le message comme quoi j'appuie sur ce bouton.
    je ne comprends plus !
    quel est le probleme pour intercepter le message d'un bouton dans sa vue ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 35
    Points : 37
    Points
    37
    Par défaut
    Ben justement je ne sais pas quel est le problème !

    Bon je vais essayer de me réexpliquer :
    Dans ma vue j'ai un bouton OK (avec pour id IDOK). Dans la classe correspondante à cette vue, je vais donc avoir une fonction OnOK (crée avec le wizard).
    Et lorsque j'exécute, que j'arrive sur ma vue et que je clique sur le bouton OK, je ne passe pas dans la fonction OnOK correspondante !

    Voilà, j'espère que c'est un plus compréhensible...

  4. #4
    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
    rajoute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ON_BN_CLICKED(IDOK, OnOK)
    dans ton begin_message_map.
    IDOK est un identifiant particulier pour une dialogue ça correspond a une fonction virtuelle de la classe CDIalog donc pas besoin de message_map.

    du coup pour une view (on peut considerer ça comme un bug) il ne genere pas de message map ...

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 35
    Points : 37
    Points
    37
    Par défaut


    Merci, merci, merci !!!!!
    (ça faisait, un petit moment que j'étais sur ce problème !)

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

Discussions similaires

  1. [MFC-MDI] Accéder au document depuis une ChildFrame
    Par stratocastom dans le forum MFC
    Réponses: 3
    Dernier message: 03/12/2010, 08h29
  2. Application MFC - MDI - Gestion des couleurs étrange
    Par m.olivier.valentin dans le forum MFC
    Réponses: 10
    Dernier message: 01/06/2009, 08h54
  3. Réponses: 7
    Dernier message: 13/03/2006, 08h56
  4. [MFC] MDI avec 1 seul document à la fois
    Par bigquick dans le forum MFC
    Réponses: 21
    Dernier message: 03/03/2005, 14h44
  5. Réponses: 3
    Dernier message: 11/02/2004, 12h50

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