Problème Programmation MFC [Résolu] - C - Programmation
Marsh Posté le 13-05-2006 à 18:13:58
Le SetWindowText produit un message WM_PAINT qui est traité par l'application quand elle est libre. Or ici la boucle de traitement monopolise le temps processeur donc le contrôle à l'écran n'est mis à jour qu'à la fin de la méthode.
Une solution consiste à intercaller le code suivant après le SetWindowText:
Code :
|
Pour les détails : http://bob.developpez.com/tutapiwin/article_23.php
Marsh Posté le 13-05-2006 à 19:28:37
Merci pour cette réponse
tu me conseilles donc de faire ceci ?
Code :
|
Marsh Posté le 13-05-2006 à 19:47:24
Atlanted a écrit : |
Ouh la la mais ca vient faire quoi c'est "ctrl_valeur" la? t'as buggé ou quoi
Marsh Posté le 13-05-2006 à 19:50:11
MSG ctrl_valeur;
J'ai mis ca dans mon source :]
pas ctrl_valeur ctrl_valeur;
Marsh Posté le 13-05-2006 à 19:51:38
Parcontre ca m'affiche bien ce qu'il y dans buffer mais sans le "rafraichir". En faite buffer contient 8 octets qui sont écrasés sans arrêt pour afficher des valeurs en continue.
Marsh Posté le 13-05-2006 à 19:58:19
Tu as deja un controle qui s'appelle "ctrl_valeur"!
EDIT: pour ta deuxieme remarque, c'est normal, car setwindowtext remplace ce qu'il y a dans le controle par ce que tu lui donne en parametres.
Marsh Posté le 14-05-2006 à 10:21:15
ReplyMarsh Posté le 14-05-2006 à 10:22:42
Atlanted a écrit : tu me conseilles donc de faire ceci ? |
Non. Certainement pas en remplaçant la structure MSG par un CEdit* : il y a aucune chance que ça compile.
Marsh Posté le 14-05-2006 à 10:49:15
Non mais je n'ai pas fais ça, maintenant ca marche.
Code :
|
et en rajoutant un static PumpMessages(); dans ma classe
Marsh Posté le 12-05-2006 à 19:17:00
Bonjour,
je développe actuellement une application avec Visual C++ et je me sert des MFC.
Bref j'ai crée une Edit box dans laquelle je voudrais afficher mon
buffer (il recoit des données en boucle). Cependant il n'affiche les
données de mon buffer qu'à la fin de la boucle et non durant toute la
boucle. Si quelqu'un peut me debloquer..
Merci.
Code :
void CClientDlg::OnRecept()
{
static char buffer[TAILLE];
int test=0;
int autori=0;
char lettre=0;
int i;
SOCKET descripteur;
sock(&descripteur);
for(int j=0;j<20;j++)
{
for (i=0;i<TAILLE-1;i++)
{
buffer[i]=lettre = reception();
}
buffer[i] = '\0';
for (i=0;i<2;i++)
reception();
envoi(buffer,descripteur);
ctrl_valeur.SetWindowText(buffer+1);
}
}
Je début dans les MFC soyez indulgents :]
Dans ClassWizard j'ai ajouté une variable de category Control de type CEdit
Message édité par Atlanted le 13-05-2006 à 20:04:43