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 :

Accès à la liste des fenêtres d'une appli MDI


Sujet :

MFC

  1. #1
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut Accès à la liste des fenêtres d'une appli MDI
    Bonjour à tous,

    Soit une application MDI dans laquelle uen fenêtre est ouverte, ainsi qu'une boite de dialogue (modale). Cette boite contient un bouton qui, si on clique dessus, doit récupérer la liste des fenêtres ouvertes de l'application. Pour ce faire, j'utilise la procédure classique telle que signalée dans la FAQ :
    Comment parcourir dans un contexte MDI toutes les fenêtres de l'application ?


    Malheureusement, la boucle de recherche des documents ne trouve rien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    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) etc...
    avec pos2 == null dans tous les cas...

    Quel est le problème et comment faire pour récupérer ma liste ?
    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    As-tu créé tes fenêtre 'à la main' ou avec le frmk CDocument/CFrame/CView? Cela pourrait expliquer que tu n'ai aucun doc si tu les créés à la main.
    Maintenant, une solution pourrait être de passer par EnumChildWindows (http://msdn.microsoft.com/en-us/libr...94(VS.85).aspx) ou une de ses cousines.

  3. #3
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Les fenêtres ont été crées avec les méthodes classiques du Framework :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    	m_pTemplateValidMesure419 = new CMultiDocTemplate(
    		IDR_VALIDMES,
    		RUNTIME_CLASS(CValidMesure),
    		RUNTIME_CLASS(CPandaChildWnd),
    		RUNTIME_CLASS(CValidMesureView419));
    	AddDocTemplate(m_pTemplateValidMesure419);
    [...]
    	    CDocTemplate *pDocTemplate =
    					((CPandaApp *) AfxGetApp ())->m_pTemplateValidMesure419;
    	    CFrameWnd *pFrameWnd = pDocTemplate->CreateNewFrame ( pDoc419, NULL );
    	    pFrameWnd->SetWindowText(GetIDStr(IDS_RECAPMES));
    	    pDocTemplate->InitialUpdateFrame ( pFrameWnd, pDoc419 );
    c'est pourquoi je ne m'explique pas le fait que la liste des docs soit vide...
    Je vais jeter un oeil sur EnumChilWindows mais à première vue, le souci avec cette méthode risque d'être : comment récupérer la classe associée au handle des fenêtres filles que l'on liste ?

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    De mémoire, (donc je vais peut-être dire une bétise). Si tu as créé tes documents à la main (new CValidMesure), as-tu pensé à faire m_pTemplateValidMesure419->AddDocument ()? Je ne suis pas sûr que ce soit fait automatiquement (en dehors du OpenFile par défaut).

  5. #5
    Membre éclairé
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Points : 709
    Points
    709
    Par défaut Recuperer les handles des fenetres MDI
    je pense que cette solution est débile mais bon..
    Une fois que ta ouvert ta vue tu recupère le HWND de la fenetre parente
    this->GetParentFrame->GetSafeHwnd(hwndFenetre);
    ensuite tu utilise ce handle pour faire quelque chose avec:
    BringWindowToTop(hwndFenetre);

  6. #6
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    De mémoire, (donc je vais peut-être dire une bétise). Si tu as créé tes documents à la main (new CValidMesure), as-tu pensé à faire m_pTemplateValidMesure419->AddDocument ()? Je ne suis pas sûr que ce soit fait automatiquement (en dehors du OpenFile par défaut).
    Exact, c'est cela qui manquait.
    Merci !

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

Discussions similaires

  1. [Lazarus] [Gnome] Masquer l'appli dans la liste des fenêtres
    Par rasmus dans le forum Lazarus
    Réponses: 0
    Dernier message: 02/08/2009, 18h27
  2. Accès et stockage des données dans une appli
    Par aristeas dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 18/01/2009, 21h55
  3. Generer une liste des fenêtre sous Windows
    Par kprepaf dans le forum Windows
    Réponses: 2
    Dernier message: 28/12/2007, 18h33
  4. liste des users connectés à une base acces
    Par progima dans le forum Access
    Réponses: 2
    Dernier message: 07/11/2005, 16h45
  5. Comment obtenir la liste des paramètres d'une SP ?
    Par Le Gritche dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/03/2003, 16h54

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