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 :

UpdateWindow ???


Sujet :

MFC

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 3
    Par défaut UpdateWindow ???
    Bonjour,

    Dans mon code, lors du message WM_SIZE, je déplace les contrôles de ma fenêtre et je les redimensionnes... Seulement, j'obtient ce genre de résultat :

    Si l'on réduit manuellement la fenêtre et qu'on la restore, le bon résultat s'affiche :

    Alors, pour l'instant, pour palier à ce problème, je fais après mon WM_SIZE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ShowWindow(hwnd,SW_HIDE);
    ShowWindow(hwnd,SW_SHOW);
    Ca fonctionne bien évidement, mais ça fais "flasher" la fenêtre, et ce n'est pas une bonne solution... J'ai bien évidement essayer de faire un UpdateWindow(hwnd); mais sans succès...

    Aidez moi SVP

  2. #2
    Membre expérimenté Avatar de BertrandA
    Inscrit en
    Août 2003
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 170
    Par défaut
    Forcer un repaint de la fenêtre en appelant Invalidate() ça le fait pas ?

  3. #3
    Membre Expert
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Par défaut
    invalidate n'a jamais "forcé" un repaint ( d'apres le msdn )

    Invalidates the entire client area of CWnd. The client area is marked for painting when the next WM_PAINT message occurs.

    ca met a jour l'affichage au prochain WM_PAINT recu, ca n'a jamais envoyé de WM_PAINT dans la pile

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 3
    Par défaut
    Bon si je récapitule, InvalidateRect, définit un RECT comme "à redéssiner", et updateWindow, redessine ce qui est nécéssaire...

    Ben ceci devraix fonctionner, je vais vérifier cela desuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RECT rcWnd;
    GetClientRect(hwndGen,&rcWnd);
    InvalidateRect(hwndGen,&rcWnd,FALSE);
    UpdateWindow(hwndGen);
    Oui ça fonctionne !!! Cool

    Merci à vous

  5. #5
    Membre averti
    Inscrit en
    Mars 2003
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 39
    Par défaut
    j'ai le même probléme,
    Tu peut détailler ta fonction s'il te plait?
    je ne voit pas ce qu'il fo mettre dans les paramétres...

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 3
    Par défaut
    met cette fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void refreshWindow(HWND hwndGen)
    {
    RECT rcWnd; 
    GetClientRect(hwndGen,&rcWnd); 
    InvalidateRect(hwndGen,&rcWnd,FALSE); 
    UpdateWindow(hwndGen);
    }
    et tu fais refreshWindow(hwndDeTaFenetre);

    pour la rafraichir

  7. #7
    Membre averti
    Inscrit en
    Mars 2003
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 39
    Par défaut
    ok merci

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

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