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 :

création frame


Sujet :

MFC

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 13
    Points : 10
    Points
    10
    Par défaut création frame
    Bonjour,
    Je travail sur un apply MDI, pour l'instant en cliquant sur mes menus j'ouvre des fenêtres, jusque là tout va bien.
    Mais le problème est que lorsque je reclique sur ces menus, une nouvelle fenêtre s'ouvre et je souhaiterai uniquement rafraichir l'ancienne.

    En fait je ne sais pas où je dois faire la vérification de la création ou non de la fenêtre. Je travail avec des fenêtre de type FORM. J'ai vu une fonction IsVisible mais elle s'applique aux dialogues, non?

    Voilà merci de votre aide...

    Bilouz

  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,
    voir la faq:
    http://c.developpez.com/faq/vc/?page=CWinApp#GetAllView
    tu parcours les fenetres existantes tu compares la signature .
    si elle existe tu fais un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    static_cast<CMDIChildWnd *>(pMyViewFind->GetParentFrame())->ActivateFrame(SW_RESTORE);
    sinon tu fais un OpenDocumentFile.


  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Merci pour ton aide mais je ne comprends pas très bien comment je vais comparer la valeur de ma FORM dans la boucle recherchant tous mes templates ?

    Et donc comment l'appeler ensuite ?

    Merci !!!

    Bilouz

  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
    salut,
    on peut ecrire le code suivant d'apres la faq:
    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
     
    CWnd *FindInstanceView(CRuntimeClass *pViewClass)
    {
        CWinApp* pApp = AfxGetApp();        
        // parcourir tous les templates
        CDocTemplate* pTemplate;
        POSITION pos = pApp->GetFirstDocTemplatePosition();
        while (pos != NULL)
        {
            pTemplate = pApp->GetNextDocTemplate(pos);
            ASSERT(pTemplate);
     
            // tous les documents du template.
            POSITION pos2 = pTemplate->GetFirstDocPosition();
            while (pos2)
            {
                CDocument* pDoc = pTemplate->GetNextDoc(pos2);
                ASSERT(pDoc);
     
                // toutes les vues du document
                POSITION pos3 = pDoc->GetFirstViewPosition();
                while (pos3 != NULL)
                {
                    CView* pView = pDoc->GetNextView(pos3);
                    ASSERT(pView);
                    if (::IsWindow(pView->GetSafeHwnd()))
                    {
                        if(pView->IsKindOf(pViewClass))
                        {
                            return pView;
                        }                    
                    }
                }
            }
        }
        return NULL;
    }
    utilisation si la classe recherchée se nomme CTestMdiView:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CTestMdiView *pView;
     
        if((pView=static_cast<CTestMdiView *>(FindClassView(RUNTIME_CLASS(CTestMdiView)))))
        {
            TRACE("\nInstance de la classe trouvée");
    static_cast<CMDIChildWnd *>(pView->GetParentFrame())->ActivateFrame(SW_RESTORE);
        }
    c'est plus clair ?

  5. #5
    Membre à l'essai
    Inscrit en
    Septembre 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Merci c'est super !

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

Discussions similaires

  1. Création frame dynamique
    Par rvzip64 dans le forum Delphi
    Réponses: 22
    Dernier message: 13/07/2007, 16h00
  2. Création et affichage de 1000 frames = plantage
    Par SkYsO dans le forum Delphi
    Réponses: 20
    Dernier message: 05/06/2007, 16h42
  3. Réponses: 6
    Dernier message: 05/02/2007, 14h56
  4. Création de frame depuis des Dll de classes
    Par ogasse dans le forum Delphi
    Réponses: 2
    Dernier message: 31/08/2006, 12h51
  5. TAdvTabsheet, création dynamique de frame
    Par gmc dans le forum Delphi
    Réponses: 2
    Dernier message: 24/08/2006, 09h37

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