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 :

comment fermer une fenetre enfant


Sujet :

MFC

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 19
    Points : 12
    Points
    12
    Par défaut comment fermer une fenetre enfant
    bonjour,
    j'ecris un petit programme tout simple pour faire un navigateur internet.

    premier probleme, lorsque je navigue sur un site, je ne ve pas de fenetre filles!
    Mon idée est de recuperer l'url de la fenetre fille, de lancer cette URL dans la fenetre principale, puis de fermer la fenetre fille. Tout va bien, l'URL se lance dans la fenetre principale sauf que je n'arrive pas a fermer la fenetre fille! CloseWindow() ferme la fenetre principale... y'aurai-t-il une classe a rajouter? merci pour vos conseils
    stef

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    comment se lance/crée la fenetre fille ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    bonjour
    apparemment la fenetre fille se lance par OnNewWindows2()...

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    fais tu un traitement particulier dans cet evenement ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void CCexploView::OnNewWindow2(LPDISPATCH* ppDisp, BOOL* Cancel) 
    {
     
            // TODO: Add your specialized code here and/or call the base class
    	CHtmlView::OnNewWindow2(ppDisp, Cancel);
    }

  6. #6
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    il ne faut justement pas faire le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CHtmlView::OnNewWindow2(ppDisp, Cancel);
    pour éviter que la nouvelle fenetre ne s'ouvre

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    merci mais jai essayer et g quand meme une fenetre fille d'internet explorer qui s'ouvre, le truc c'est que ca vien du site en lui meme, il possede un lien qui ouvre automatiquement une nouvelle fenetre.
    je v chercher une solution et je te tiens au courant merci!

  8. #8
    Membre habitué

    Inscrit en
    Mai 2005
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 132
    Points : 171
    Points
    171
    Par défaut
    Salut,

    Essayes-toi appeller

    GetParentFrame()->DestroyWindow ();

    Fredy "KRUGER"

  9. #9
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    c'est genre une popup que tu voudrais virer et qui est hors controle de la classe ?

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    oui c une popup...

  11. #11
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    tu peux peut-etre essayer dans un premier temps de récuperer son handle si elle est en premier plan avec GetForeGroundWindow et ensuite lui envoyer un message WM_CLOSE pour la fermer

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    bonjour,
    merci pour le conseil

    j'arrive effectivement à identifier la fenetre popup par un handle
    et je lui envoi le message WM_CLOSE en utilisant la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    LRESULT DefWindowProc(
      HWND hWnd,      // handle to window
      UINT Msg,       // message identifier
      WPARAM wParam,  // first message parameter
      LPARAM lParam   // second message parameter
    );
    Mais cette fonction ne possede pas autant de parametres lorsque je compile mon programme, il serai plutot de la forme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    LRESULT DefWindowProc(
      UINT Msg,       // message identifier
      WPARAM wParam,  // first message parameter
      LPARAM lParam   // second message parameter
    );
    je ne peut donc pas specifier l'handle de ma fenetre, je l'ai donc inseré dans OnNewWindow2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void CCexploView::OnNewWindow2(LPDISPATCH* ppDisp, BOOL* Cancel) 
    {
    	CHtmlView::OnNewWindow2(ppDisp, Cancel);
    	class CWnd *fille;
    	fille = GetForegroundWindow();
    	DefWindowProcA(WM_CLOSE,NULL,NULL);
    }
    Ca se compile sans erreur, mais lorsque je l'execute, je clic sur un lien du site qui m'ouvre une fenetre fille, j'ai un message d'erreur du compilateur: "User breakpoint called from code at 0xbf....."

    j'ai donc essayé d'envoyer un autre message contenu dans Winuser.h comme SW_MAXIMIZE ou bien SHOW_FULLSCREEN mais aucun changement la fenetre popup s'ouvre sans prendre en compte les messages envoyés.... je continu à chercher dans cette voie là merci pour la piste en tout cas!!

  13. #13
    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,
    le WM_CLOSE c'est avec un Postmessage !!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fille->Postmessage(WM_CLOSE);

Discussions similaires

  1. [Swing] fermer une fenetre enfant avec un bouton.
    Par TheSeb dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 23/11/2013, 12h42
  2. comment fermer une fenetre enfant ?
    Par noobyyy dans le forum C#
    Réponses: 7
    Dernier message: 16/11/2010, 11h52
  3. Comment fermer une fenetre
    Par ipascual dans le forum MFC
    Réponses: 8
    Dernier message: 28/04/2006, 23h26
  4. Comment fermer une fenêtre enfant MDI ?
    Par DeveloMagaly dans le forum Composants VCL
    Réponses: 2
    Dernier message: 30/09/2005, 13h10
  5. Comment fermer une Fenetre Modal avec Code ?
    Par Soulama dans le forum Langage
    Réponses: 19
    Dernier message: 13/07/2005, 11h17

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