Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
703 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Rafraichessement des éléments d'une boite de dialogue

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Rafraichessement des éléments d'une boite de dialogue

n°1794521
cyte
Posté le 01-10-2008 à 17:36:31  profilanswer
 

Salut à tous,
 
Dans mon programme multi thread, j'ai un thread qui se charge de lencer les boites de dialogues.
Au démarrage, deux boites de dialogues sont lançées.
 
Dans la principale, j'ai, entre autre, un Edit control dans lequel j'affiche l'heure courante; pour ce faire, j'ai crée une variable en valeur (CString) que je viens mettre à jour puis UpdateData(false);
 
Mon problème est que dans ce CEdit, l'heure se réecrit par dessus sans effacer la valeur précédente. Le seul moyen de "nettoyer" ça est de faire passer la deuxième boite de dialogue par dessus le CEdit!!!!
 
Donc, comment faire pour le rafraichessement soit "automatique" et ainsi ne plus voir l'heure se réecrire pa dessus?
 
Merci d'avance.

mood
Publicité
Posté le 01-10-2008 à 17:36:31  profilanswer
 

n°1795424
cyte
Posté le 03-10-2008 à 18:33:30  profilanswer
 

Personne n'a une petite idée, même une petite piste..????

n°1796306
xilebo
noone
Posté le 06-10-2008 à 20:22:33  profilanswer
 

GetDlgItem(ID_DE_TA_BOITE)->SetWindowText(ref_a_ton_CString);
 
 
Plutot que de créer un thread rien que pour rafraichir l'heure, utilise plutot un timer (par contre, gaffe, la précision est bof).

n°1796370
cyte
Posté le 06-10-2008 à 21:50:48  profilanswer
 

mon thread gère toute la partie IHM (plusieures boites de dialogues possibles). Dans l'IHM principale, il y a ce fameux CEdit affichant l'heure!!
 
voici mon code :
 
CString m_CurrentTimeTemp = _T("" );
m_CurrentTimeTemp.Empty();
 m_HeureCourante = CTime::GetCurrentTime();
 if ( m_HeureCourante.GetHour() < 10 ) m_CurrentTimeTemp.AppendFormat(_T("0" ));
 m_CurrentTimeTemp.AppendFormat(_T("%d" ), m_HeureCourante.GetHour());
 m_CurrentTimeTemp.Append(_T(":" ));
 if ( m_HeureCourante.GetMinute() < 10 ) m_CurrentTimeTemp.AppendFormat(_T("0" ));
 m_CurrentTimeTemp.AppendFormat(_T("%d" ), m_HeureCourante.GetMinute());
 m_CurrentTimeTemp.Append(_T(":" ));
 if ( m_HeureCourante.GetSecond() < 10 ) m_CurrentTimeTemp.AppendFormat(_T("0" ));
 m_CurrentTimeTemp.AppendFormat(_T("%d" ), m_HeureCourante.GetSecond());
 
this->GetDlgItem(IDC_G_TIME)->SetWindowText(m_CurrentTimeTemp.GetBuffer(0));
 
 
Et ça ne marche pas mieux!! J'ai essayé plusieurs combinaisons (this->GetDltItem, création d'un contrôle sur le CEdit...) mais rien n'y fait!!!

n°1796372
cyte
Posté le 06-10-2008 à 21:51:42  profilanswer
 

du moins, j'affiche l'heure correctement mais le contenu du CEdit ne 'efface pas avant d'écrire la nouvelle heure

n°1797292
cyte
Posté le 08-10-2008 à 16:26:10  profilanswer
 

J'ai trouvé l'origine du problème mais je n'ai pas de solution pour y remédier!!!!
 
le problème est que mes Cedit ont tous le background transparent (bitmap de fond) via la réception u message WM_CTLCOLOR
 
Lorsque je désactive la transparance, ça marche nickel mais je vois le fond....
 
Quelqu'un aurait-il une idée?

n°1797325
tpierron
Posté le 08-10-2008 à 17:05:14  profilanswer
 

Et en forçant le rafraîchissement via InvalidateRect, ça donne quoi (ça va peut-être clignoter un peu beaucoup, surtout si tu forces l'effacement) ?
 
Tu as l'air d'utiliser un controle "Edit", si c'est en read-only pourquoi pas un simple controle "Static" ?

n°1797328
cyte
Posté le 08-10-2008 à 17:09:37  profilanswer
 

j'avais déjà essayé la méthode de Invalidate mais oui, ça clignote beaucoup!!!
 
En fait j'ai un CEdit en ReadOnly auquel j'associe une variable de valeur (CString); j'ai essayé avec une variable de contrôle CEdit et faire SetWindowText mais j'ai le même résultat.
 
comment tu utiliserais le contrôle Static? Celui dans la boite à outils?

n°1797332
cyte
Posté le 08-10-2008 à 17:15:54  profilanswer
 

j'ai essyé avec le contrôle static et c'est la même chose : ça rafraichit bien tant que le background du contrôle n'est pas transparent!!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Rafraichessement des éléments d'une boite de dialogue

 

Sujets relatifs
Comparaison des éléments d'un JPanelSélectionner un fichier ou un dossier dans la même boîte de dialogue
Afficher Background puis éléments de la page!Personnaliser la boite d'authentification
Macro boîte de dialogue à plusieurs questionsProbleme de certificat pour dialogue entre une applet et un serveur
[VBA] Recherche dans les éléments d'une listeSomme d'elements de differentes tables
Plus de sujets relatifs à : Rafraichessement des éléments d'une boite de dialogue


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR