Comment rafraichir une fenetre à intervalle régulier ?

Résolu
KissyFroth Messages postés 38 Date d'inscription mardi 16 août 2005 Statut Membre Dernière intervention 7 avril 2007 - 17 déc. 2005 à 14:37
KissyFroth Messages postés 38 Date d'inscription mardi 16 août 2005 Statut Membre Dernière intervention 7 avril 2007 - 17 déc. 2005 à 21:37
Mon probleme est simple : j'avai concu un programme avec une interface graphique toute simple dans un projet Win32 Application. Mais tout s'est compliqué losque j'ai voulu rajouter la gestion du temps dans mon prog: étant donné que le programme "boucle" sur le callback de la fenetre dans l'attente d'un évènement, comment faire pour prendre en compte le temps "comme étant un évenement" sans pour autant "court circuiter" completement le callback (auquel cas on n'est obligé de sortir du programme par un ctrl-alt-suppr en cas de probleme ou tant que l'heure declencheur d'évènement n'a pas été atteinte )

Autrement dit y-a-t il un moyen de forcer la fenetre à se refraichir à intervalle régulier ?

répondez moi vite svp

3 réponses

Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
17 déc. 2005 à 14:48
SetTimer() pour créer un timer où tu précise l'intervalle de temps.



Et pour récupérer l'évenement (émis à intervalles réguliers):

case WM_TIMER:

{

InvalidateRect(hWnd, NULL, 0); // pour rafraichir toute la
fenetre dont le handle est hWnd (en fait un message WM_PAINT est lancé)

}

break;
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
17 déc. 2005 à 14:49
Normalement elle se redessine quand cela est nécessaire.
Si tu veux le faire parce que des données on changé, tu peux utiliser InvalidateRect. Pour la notion de temps, tu utilises un Timer (voir la fonction SetTimer). A chaque message WM_TIMER, tu fais InvalidateRect(hWnd, 0, 1);
3
KissyFroth Messages postés 38 Date d'inscription mardi 16 août 2005 Statut Membre Dernière intervention 7 avril 2007
17 déc. 2005 à 21:37
Merci pour vos réponses. Ca marche nickel. Petite précision : l'intervalle de tps est le 3eme parametre de la fonction UINT SetTimer(HWND hwnd,UINT nIDEvent,UINT uElapsed,TIMERPROC lpTimeFunc)
0
Rejoignez-nous