Affichage zone client

Informatichien Messages postés 2 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 25 février 2008 - 25 févr. 2008 à 17:26
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 - 26 févr. 2008 à 09:16
probleme : rafraichir une partie d'une boite de dialogue :
boite dialogue contenant en partie superieure 6 boutons, en partie inferieure deux lignes de texte (textout...)
on veut rafraichir seulement les lignes de texte environ toute les 40 millisecondes sans toucher aux boutons,

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
     GetClientRect(hwnd,&rcClient);//la zone utilisable de la fenetre
     ...
     switch (message)
    {
     case WM_PAINT:
      {
       SetWindowText (Btdossier, btdossier.texte);
       UpdateWindow(Btdossier);
       SetWindowText (Btstop, btstop.texte);
       UpdateWindow(Btstop);
       ...
       ...
       ...
       hdc=BeginPaint(hwn d, &ps);
       SetTextColor(hdc,bleu);
       TextOut(hdc,50,rcClient.bottom-40,affi,strlen(affi));
       SetTextColor(hdc,vert);
       TextOut(hdc,50,rcClient.bottom-20,texte,strlen(texte));
       ReleaseDC(hwnd,hdc);
      }  
   

dans ma fonction de travail qui veut afficher en temps le plus reel possible des infos :
      RECT r = rcClient;
      r.top = r.bottom/2;
RedrawWindow(hwnd,&r,NULL,RDW_INVALIDATE|RDW_ERASENOW|RDW_NOCHILDREN|RDW_UPDATENOW);
pour ne redessiner que la partie basse de mon espace client,
mais ca redessine tout et donc l'affichage de mes boutons n'est pas stable.
J'ai tout faux!
remerciements a qui m"eclaire sur la question!
 

2 réponses

Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
25 févr. 2008 à 17:34
Salut
Si tu veux rafraichir ta fenetre toutes les 40 ms il faut que tu places la ligne suivante dans un timer: InvalidateRect(hwnd,RECT,TRUE);
avec dans RECT les coords de la zone a redessiner.

A+
Mon site internet : http://pistol.petesampras.free.fr
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
26 févr. 2008 à 09:16
Yop,

Soit timer, soit thread, mais utilisé un thread pour ça , je pense que un timer serai préférable. Pour cela utilise la fonction :
SetTimer .

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]
0
Rejoignez-nous