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] Forcer le reaffichage


Sujet :

MFC

  1. #1
    Membre éclairé
    Avatar de barthelv
    Inscrit en
    Mars 2003
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 267
    Par défaut [MFC] Forcer le reaffichage
    Bonjour,

    J'ai une fenetre MFC qui ouvre des dialog box. Or, lorsque celles-ci s'ouvrent, si je les deplace par dessus l'interface qui les a ouvertes, celle ci est bien reaffichee. Par contre si je clique sur l'interface derriere et que donc je cache la dialog box que j'ai ouverte, a l'endroit ou etait positionnee la petite dialobox , j'ai un rectangle gris. Ce qui veut dire que mon interface principale ne s'est pas redessinne a cet endroit. Pourtant les controles qu'elle comporte continuent de se reafficher. Le seul moyen de la reafficher correctement est de faire reduire, puis afficher.

    Avez vous une idee de comment je peux resoudre ceci ?

  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
    Par défaut
    salut,
    il est bizarre ton probleme .
    je suppose que la dialogue est non modale .
    eventuellement verifie que la fenetre principale ne soit pas desactivée par un EnableWindow(FALSE) .
    comme c'est le cas lors d'un DoModal() si on donne une fenêtre parent a la dialogue


  3. #3
    Membre émérite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par défaut
    Et CWnd::UpdateWindow()

  4. #4
    Membre éclairé
    Avatar de barthelv
    Inscrit en
    Mars 2003
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 267
    Par défaut
    Bon j'ai un peu mieux observe ce qu'il se passe.

    Un collegue a developpe une interface graphique, et me passe un handle sur un conteneur ou je peux dessiner ma vue. Jusque la pas de probleme. Je cree ma vue et l'affiche avec son handle comme parent. Mais si une fenetre quelconque windows apparait a l'ecran, masque UNE PARTIE de ma vue et que je reclique sur celle-ci pour la refaire passer devant, ma vue n'est pas reaffichee. Cela ne fait pas cela pour la vue generale, celle de mon collegue.

    Cela vous aide t'il un peu ?

  5. #5
    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
    re,
    ta vue elle est derivée de quelle classe de base ?
    tu a placé un traitement dans le paint ?
    essaye de mettre un TRACE("\nPaint"); pour voir si ça passe dans ce contexte de recouvrement.


  6. #6
    Membre éclairé
    Avatar de barthelv
    Inscrit en
    Mars 2003
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 267
    Par défaut
    Ma classe vue est heritee des CDialog. Quand au paint, je n'ai pas surcharge la methode. Aurais-je du ?

    Je vais essayer.

    EDIT : Le paint est bien appele.

  7. #7
    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
    dans quoi tu dessines alors ?

  8. #8
    Membre éclairé
    Avatar de barthelv
    Inscrit en
    Mars 2003
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 267
    Par défaut
    Mon collegue me passe un handle sur un CFormView. Ce handle a juste pour but de definir une zone ou afficher ma vue dans l'interface generale du soft.

    Pour preciser un peu. Il me donne ce handle et moi je monte ma vue sur un thread et donc j'ai une pompe a messages afin de les redispatcher :

    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
      while(1)
      {
        dwRet = MsgWaitForMultipleObjects( 1,             // One event to wait for
                                          &hStopEvent,    // The array of events
                                          FALSE,          // Wait for 1 event
                                          INFINITE,       // Timeout value
                                          QS_ALLINPUT);   // Any message wakes up
        if(dwRet == WAIT_OBJECT_0)
          //Stop thread
          return 0;
        else if(dwRet == WAIT_OBJECT_0 + 1)
          while(PeekMessage(&msg,NULL,NULL,NULL,PM_REMOVE))
          {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
          }
        else
          return 0;
      }

  9. #9
    mat.M
    Invité(e)
    Par défaut
    C'est incompréhensible ce qui est décrit là

    J'ai une fenetre MFC qui ouvre des dialog box
    Attention utiliser la bonne terminologie que tout le monde puisse comprendre ;
    Chez moi une fenêtre cela peut être matériellement une CDialog ou bien une architecture MDI/SDI avec CFrameWnd/CDocument/CView
    Donc fenêtre=CDialog



    Mon collegue me passe un handle sur un CFormView.
    Pour rafraîchir une CFormView il faut obtenir un pointeur sur CDocument et appeler UpdateAllView ; [/quote]

  10. #10
    Membre éclairé
    Avatar de barthelv
    Inscrit en
    Mars 2003
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 267
    Par défaut
    Merci a Gabrielly et a farscape. J'ai finalement trouve.

    Il m'a suffit de faire un UpdateWindow() dans la methode Paint. C'est tout mais je n'y avais pas pense !

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

Discussions similaires

  1. [XL-2010] Forcer une couleur dans la MFC
    Par Harry Covair dans le forum Excel
    Réponses: 4
    Dernier message: 29/09/2011, 08h58
  2. [MFC] CDialog -> forcer le rafraichissement
    Par Rafoo dans le forum MFC
    Réponses: 3
    Dernier message: 05/09/2006, 16h51
  3. [MFC] Reaffichage d'un toolbar fermé
    Par kinhelios dans le forum MFC
    Réponses: 4
    Dernier message: 14/08/2006, 09h43
  4. [MFC] forcer le dessin d'une CDialog
    Par ricky78 dans le forum MFC
    Réponses: 3
    Dernier message: 03/10/2005, 15h42
  5. probleme de reaffichage avec openGL [MFC]
    Par ryu20 dans le forum MFC
    Réponses: 9
    Dernier message: 22/01/2005, 20h12

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