begin process at 2012 05 29 10:01:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

API

 > 

InvalidateRect en boucle.


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

InvalidateRect en boucle.

vendredi 18 mars 2005 à 09:42:04 | InvalidateRect en boucle.

tintin72

Bonjour,

Je voudrais envoyer plusieurs fois le message InvalidateRect lors
de l'appuie sur une touche du clavier (case WM_KEYDOWN)  pour provoquer à chaque fois l'affichage d'une ligne de texte (les unes en-dessous des autres) dans la section : case WM_PAINT. 

J'ai donc mis  InvalidateRect en boucle du genre :
    for(i = 0; i < 10; i++)
      {
          InvalidateRect(hwnd, NULL, FALSE);
       }
mais qu'une seule ligne s'affiche comme s'il n'y avait eu qu'un seul appel à InvalidateRect.
Note: Si par contre j'appuie plusieurs fois sur une touche, l'affichage fonctionne comme  
          prévu. 

Est ce que quelqu'un aurait une idée ?

Merci



Tintin 72
samedi 19 mars 2005 à 10:30:53 | Re : InvalidateRect en boucle.

vecchio56

Administrateur CodeS-SourceS
InvalidateRect change juste la zone à dessiner, si tu n'envoie pas de WM_PAINT, tu ne sais pas quand elle sera effectivement redessinée. Envoie donc un WM_PAINT ou plus simplement fais un UpdateWindow aussitôt après le invalidateRect
samedi 19 mars 2005 à 22:17:07 | Re : InvalidateRect en boucle.

tintin72

Effectivement, ça marche avec un UpdateWindow à la suite.

Merci !

PS : Mais pourtant je croyais que InvalidateRect, du fait qu'il invalidait un rectangle, générait

un message WM_PAINT pour que la zone client soit rafraîchit. Qu'en est-il exactement ?


Tintin 72

samedi 19 mars 2005 à 22:24:40 | Re : InvalidateRect en boucle.

vecchio56

Administrateur CodeS-SourceS
Tu peux lire ce que dit la MSDN, c'est assez complet la dessus. En gros on sait qu'il y aura un autre WM_PAINT mais on ne sait pas quand. J'avoue que c'est aussi assez flou dans mon esprit.
Voila un passage que j'ai trouvé qui explique que le WM_PAINT n'est pas envoyé automatiquement après un InvalidateRect:

In this example, the NULL argument used by InvalidateRect specifies the entire client area; the TRUE argument causes the background to be erased. If you do not want the application to wait until the application's message queue has no other messages, use the UpdateWindow function to force the WM_PAINT message to be sent immediately. If there is any invalid part of the client area, UpdateWindow sends the WM_PAINT message for the specified window directly to the window procedure.


samedi 19 mars 2005 à 23:09:18 | Re : InvalidateRect en boucle.

tintin72

C'est bon à savoir.

Encore merci !

Tintin 72


Cette discussion est classée dans : boucle, case, touche, appuie, invalidaterect


Répondre à ce message

Sujets en rapport avec ce message

pour que mes touches soient détectées immédiatement [ par snake57 ] Bonjour,j'ai un petit soucis avec la détection de touche. Je vous met le bout de code concerné plus bas pour que vous ayez une idée.Enfait je détecte Sortir d'une boucle dès qu'une touche est pressée [ par admax74 ] Bonjour,J'ai dans mon programme une boucle dont j'aimerais sortir dès que la touche espace par exemple est pressée.ainsi:code:do{// ma boucle Appui sur touche, si simple et pourtant... [ par supergrey ] Bonjour tout le monde, j'ai un petit probleme, pour tester l'appui sur une touche.Voila ce que je fais:switch( uMsg){ case WM_KEYDOWN: Pas de WM_KEYDOWN quand j'appuie une touche [ par supergrey ] Bonjour, je voudrais récupérer la touches enfoncés dans mon application, seulement dans ma fonction Proc() bien que j'ai mis une case WM_KEYDOWN le pr intercepter touches du clavier [ par ndubien ] Bonjour,Comment intercepter l'appuie d'une touche du clavier dans une DialogBox?J'ai essayé WM_KEYDOWN mais le message semble n'être jamais envoyé.Mon Probleme pour kbhit [ par ChAnGy59 ] Bonjour a tous,Voila mon petit sousis, j'aimerai pouvoir sortir d'une boucle while en "frappant" la touche Q, a l'aide de kbhit. Je voulais savoir si Faire un "Cast" sur une variable! [ par Progez ] Bonjour, je sais pas si vous allez comprendre ma question! mais elle est assez simpleJ'ai une boucle foret jai 25 variable nommée Case_P1 à Case_P25Je Question sur Getch() et retour chariot [ par KutaJack ] Bonjour Je suis débutant en C++ et j'utilise getch() avec kbhit() suivit d'un switch pour pouvoir faire tel ou tel action en fonction de la touche ap problème de boucle infinie (win32 sans MFC) [ par ksh182 ] Salut,voilà, je code en C++ win32 via les ressources et j'utilises VS 2003 .NET----------------- case WM_COMMAND: { switch(wParam) { case IDC Intercepter la touche ESC [ par mindark ] BonjourVoila, j'ai un programme qui execute une boucle d'environ 5 mins. Et je voudrais que cette boucle soit executee plusieurs fois, jusqu'a ce que


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,874 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales