Quazar
Messages postés84Date d'inscriptionmardi 19 octobre 2004StatutMembreDernière intervention 6 octobre 2006
-
5 sept. 2006 à 12:10
Quazar
Messages postés84Date d'inscriptionmardi 19 octobre 2004StatutMembreDernière intervention 6 octobre 2006
-
5 sept. 2006 à 17:11
Salut
Je suis MSVC++2005.
J ai un probleme lorsque j'essaie de mettre un controle (editBox) a jour. Il m'écrit mes string les uns par dessus les autres ?
Je pense que j ai omis quelque chose quelque part. Est ce que quelqu'un pourrait me renseigner ?
J'ai utilisé plusieurs méthodes pour parvenir à mes fins, sans succés...
Quazar
Messages postés84Date d'inscriptionmardi 19 octobre 2004StatutMembreDernière intervention 6 octobre 2006 5 sept. 2006 à 12:32
Je te remercie d etre venue si vite a mon secours.
Je ne vois pas vraiment de quoi tu parles. Je ne me rappelles pas avoir vu 'ownerdraw' quelque part en fait.
Par ailleurs, j'ai été maladroit dans l énoncé de mon probleme. Hormis la faute de frappe que j'ai fait dans le titre, j'ai oublié de préciser que mon EditBox etait en mode ReadOnly et que j'avais rendu transparente en interceptant le message de colorisation des controles:
...
case CTLCOLOR_EDIT:
pDC->SetBkMode(TRANSPARENT);
hbr = (HBRUSH)GetStockObject(NULL_BRUSH);
break;
Quazar
Messages postés84Date d'inscriptionmardi 19 octobre 2004StatutMembreDernière intervention 6 octobre 2006 5 sept. 2006 à 12:48
Oui j ai vu, j les également rajouté. Mais ca ne change rien. Les textent se supperposent. J'ai aussi essayé de réaffecter le mode TRANSPARENT au contexte de mon EditBox en vain :
Quazar
Messages postés84Date d'inscriptionmardi 19 octobre 2004StatutMembreDernière intervention 6 octobre 2006 5 sept. 2006 à 16:19
Excusez moi d'avoir pris du temps pour répondre (repas + coupre d'électrécité, le bonheur quoi).
En fait je me suis rendu compte que je vous avais aiguillé sur un faux probleme. Je croyais que mon probleme venait de l'apparence de mon EditBox, et que donc la solution venait de mon contexte graphique. De là, nous nous sommes concentré sur la transparence de mon controle.
Je me suis aperçu que mon probleme ne venait pas forcément de là.
Ce que je ne vous ai pas dit c'est que je venais mettre a jour mon controle depuis ma fenetre parente. La fenetre ou se trouve l'EditBox étant ouverte non modalement.
Apres plusieurs test à la mord moi le noeud je me suis apercu que j'arrivais à mettre à jour ma fenetre en faisant ceci :
dlgAttente->ShowWindow(SW_HIDE);
dlgAttente->ShowWindow(SW_SHOWDEFAULT);
dlgAttente->SetDlgItemTextA(IDC_SPLASH_EDIT, "Toto is not a hero");
dlgAttente->UpdateWindow();
Du coup je me dis que c'est parce que je n'arrivais pas raffraichir ma fenetre comme il faut, que mon champ EditBox ne se met pas à jour correctement.
Je suis désolé de vous avoir fait cherché dans une mauvaise voix
Cependant je pense que vous situez peut etre mieux le probleme et que vous avez en tete une meilleur solution que la mienne ( ShowWindow(SW_HIDE); puis ShowWindow(SW_SHOWDEFAULT); ) Il doit certainement existé une fonction de raffraichissement plus habile que ce que je fais.
Quazar
Messages postés84Date d'inscriptionmardi 19 octobre 2004StatutMembreDernière intervention 6 octobre 2006 5 sept. 2006 à 17:11
J'ai utilisé Invalidate() et ca fonctionne bien. Je te remercie.
Pour le non raffraichissement, il me semble avoir eu le même problème en VB a une époque. Et à bien y réfléchir, ce n'est pas plus mal que je force un OnPaint() de la fenêtre.