Problème de temporisation et de faire varier valeur d'un "Edit Field"
cs_Natan
Messages postés5Date d'inscriptionmercredi 25 décembre 2002StatutMembreDernière intervention13 février 2004
-
13 févr. 2004 à 10:57
cs_Natan
Messages postés5Date d'inscriptionmercredi 25 décembre 2002StatutMembreDernière intervention13 février 2004
-
13 févr. 2004 à 12:51
Bonjour,
Je n'arrive absolument pas à faire varier suivant une temporisation de 5s environ entre chaque valeur, la valeur qui doit apparaitre dans un " edit field" nommé IDTS. A chaque tentative, la seule valeur qui s'affiche c la dernière valeur de la série à afficher. Le programme é en Visual C avec lcc-win32.
L'instruction qui gére cela est:
case ID_PW1:
valeur = -15;
do
{
affichage_T(1,valeur,hwndDlg);
sleep(5000);
valeur++;
}
while(valeur<60);
garslouche
Messages postés583Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention29 mai 20151 13 févr. 2004 à 11:52
Tu sais que tu es un sauvage ? La fonction itoa transforme un entier en char* (tu pouvais aussi utiliser sprintf mais c un peu moins bien). J'ai réécrit ta fonction affichage_T :
void affichage_T(int choix, int valeur,HWND hwndDlg)
{
char buffer[4];
itoa(valeur, buffer, 10);
switch (choix)
{
case 1:
SetDlgItemText(hwndDlg,IDTS,buffer);
break;
case 2:
SetDlgItemText(hwndDlg,IDTC,buffer);
break;
}
}
D'autre part c'est Sleep avev un S majuscule qu'il faut utiliser.
Et ton do...while peut etre avantageusment remplacé par un for:
for (valeur=15; valeur<60; valeur++)
{
affichage_T(1,valeur,hwndDlg);
Sleep(5000);
}
On ne force pas une curiosité, on l'éveille. .................................................Daniel Pennac
cs_Natan
Messages postés5Date d'inscriptionmercredi 25 décembre 2002StatutMembreDernière intervention13 février 2004 13 févr. 2004 à 11:55
mdr c vré c un peu sauvage ce que j'ai écris.
Merci beaucoup pour l'info, je ne connéssé pa l'instruction itoa.
Je vé essayé ça je te tiens au courant encore merci.
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 13 févr. 2004 à 12:28
Il faut éviter de faire des boucles de temporisations à l'intérieur de la DlgProc (sinon le dialogue ne sera jamais redessiné). Il est préférable d'utiliser un Timer :
case ID_PW1 :
valeur = -15;
SetTimer(hwndDlg, 0x1,5000, NULL);
break;
cs_Natan
Messages postés5Date d'inscriptionmercredi 25 décembre 2002StatutMembreDernière intervention13 février 2004 13 févr. 2004 à 12:51
Ok je vé testé. Mais j'arrive tj pas à faire afficher chaque valeur les une après les autres seule la dernière valeur s'affiche.
Je vé utilisé le timer peut-etre que ça réglera le problème.