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 :

Dialog non modale


Sujet :

MFC

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 48
    Par défaut Dialog non modale
    Salut à tous,

    Voila, lors du chargement d'un fichier, je souhaite ouvrir un message temporaire pendant que le programme charge le fichier.
    Pas besoin de progress bar ou autres, j'ai simplement créé une Dialog avec un message et une image.
    Ensuite, j'ouvre cette fenêtre en mode non modal, elle s'affiche bien, puis est supprimée, cependant, les contrôles static (le texte et l'image) ne s'affichent pas : elle reste vide (voir photo).

    Voilà le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CDialogCharg d;
    d.Create(IDD_DIALOG_CHARG);
    d.ShowWindow(TRUE);
     
    //traitement
     
    d.DestroyWindow();
    Quelqu'un peut-il me dire ce qui cloche?

    Et dernière précision, si je l'ouvre en modal, elle s'affiche correctement.
    Images attachées Images attachées  

  2. #2
    Membre confirmé Avatar de Soronite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 82
    Par défaut
    Bonjour eddie5150,

    Personnellement quand je crée une fenêtre non-modal je crée plutot un pointeur sur objet et non l'objet. Moi quand j'utilise cette méthode j'ai pas probleme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CDialogCharg * Dlg;
    Dlg = new CDialogCharg ();
    Dlg-> Create (CDialogCharg::IDD);
    Dlgg->ShowWindow(SW_SHOW);
    ...
    Sa change pas grand chose mais peut être que c'est ta solution !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 48
    Par défaut
    salut !

    merci de ta réponse, malheuresement ça ne résoud pas mon problème.
    Je me demande si ca n'est pas tout simplement un bug, parceque je vois pas pourquoi ca ne marcherai pas.

    Merci quand même !

  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
    Par défaut
    salut,
    c'est un peu des deux ...
    1) il faut effectivement que ça soit un pointeur pour la dialogue ou une variable dont la portée est suffisante ,sinon quand l'objet se détruit il détruit la fenêtre avec...
    2) surtout pas de DestroyWindow(); après le show ,sinon elle est détruite après être crée : rappel si c'est non modale le code ne s'arrête après le create le show etc...
    voir faq: http://c.developpez.com/faq/vc/?page...gPostNcDestroy

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 48
    Par défaut
    salut, farscape,

    je ne suis pas sûr d'avoir compris ce que tu as dit, mais dans mon cas, je veux qu'elle soit détruite. En fait, elle s'affiche pendant que d'autres opérations sont effectuées, et se ferme automatiquement après la fin de ces opérations. C'est justement pour que le code continue que j'ai créé une fenêtre non modale.

    Sinon, je viens de me rendre compte que si l'on passe une autre fenêtre devant, elle s'affiche ensuite normalement, ce serait donc un problème de rafraichissement ?
    De plus, si j'enlève justement le DestroyWindow, dès que le traitement est terminée, là encore l'affichage du Dialog redevient normal.

    Y'aurait-il quelque chose à faire pour forcer son rafraichissement ?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 48
    Par défaut
    Bon, je suis arrivé à résoudre le problème, pour ceux que ca intéresse, allez voir Ici dans la faq pour forcer le rafraichissement.

    Et merci ca marche bien maintenant !

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

Discussions similaires

  1. Dialog non modal
    Par Kemanke dans le forum MFC
    Réponses: 4
    Dernier message: 05/10/2008, 21h38
  2. Dialog Box non modale
    Par whitebird001 dans le forum MFC
    Réponses: 3
    Dernier message: 12/03/2008, 20h35
  3. Dialog non modal
    Par fd dans le forum MFC
    Réponses: 2
    Dernier message: 06/09/2006, 18h30
  4. [debutant] JDialog non modal
    Par andresan dans le forum Agents de placement/Fenêtres
    Réponses: 10
    Dernier message: 12/05/2004, 13h40
  5. Rendre une fenêtre modale non modale
    Par Smortex dans le forum Composants VCL
    Réponses: 2
    Dernier message: 30/03/2003, 17h56

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