Sortir d'une boucle

adeteine Messages postés 5 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 2 août 2005 - 1 août 2005 à 22:02
adeteine Messages postés 5 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 2 août 2005 - 2 août 2005 à 20:59
Salut,
J'ecris un petit logiciel de compte à rebours spécifique avec un bouton start et un bouton stop sur visual c++ 6.0. En cliquant sur start, mon compte à rebours commence sans problème. Mais comment le stopper correctement quand je clique sur stop ? . Voici un extrait
void CDecompteDlg::OnOK()
{
// TODO: Add extra validation here
while (stop==0)
{
if (m_boucle==FALSE)
{
CDecompteDlg::OnButton1(); //timer1
CDecompteDlg::OnButton2(); //timer2
return;
}


else
{
for(;;)
{
CDecompteDlg::OnButton1();
CDecompteDlg::OnButton2();
}
}
}
Sleep(1000);
stop=0;


}

void CDecompteDlg::OnStop()
{
// TODO: Add your control notification handler code here
stop=1;
UpdateData(TRUE);


}
merci pour votre aide

8 réponses

mondrone Messages postés 246 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 11 mars 2012
2 août 2005 à 09:40
La si je ne m'abuse tu remet stop=0 a chaque passage apres le
while(stop==0) donc l'action du stop=1 quand tu appui sur le bouton
stop doit freiner ton décompteur pour un tour ensuite il repart
normalement non ?

<hr size="2" width="100%"> Qui ne tente rien...

Ne risque pas d'avoir grand chose !!!

<hr siz="">
0
BunoCS Messages postés 15330 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 novembre 2022 103
2 août 2005 à 10:09
Ce que je ferais:





- j'ai une variable compteur initialisé à 10 par exemple


- dans la procédure OnOK(), je lance un timer qui réagira toutes les
secondes (1000 millisecondes): timer=SetTimer(hWnd,NULL,1000,NULL);


- dans la procédure OnTimer(), je décrémente mon compteur (et je
l'affiche éventuellement). Quand le compteur arrive à zéro, je le fais
savoir et j'arrête le timer en faisant KillTimer(timer);


- dans la procédure OnStop(), je veux arrêter "brutalement" le compteur donc je fais juste un KillTimer(timer);


Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
adeteine Messages postés 5 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 2 août 2005
2 août 2005 à 18:45
Justement, MONDROME, le fait de mettre STOP=1 n'arrete pas mon decompte mais fait planter le programme. Je fais essayer la méthode de BRUNO, sinon je fais faire un test de la valeur de STOP dans mes différentes boucle car en fait si la condition du while est passée, la valeur de STOP ne réagit plus car elle n'est pas testée par la suite. Merci pour vos réponses et on reste en contact
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 12
2 août 2005 à 18:53
Un affreux goto te simplifierait la vie, quoi qu'on puisse en dire
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mondrone Messages postés 246 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 11 mars 2012
2 août 2005 à 19:20
vecchio56, je tien juste a rappeler que le GOTO, si affreux soit-il yen
a plein dans n'importe quel programme, car en assembleur c'est le seul
moyen que tu as pour faire une boucle ou même un simple if then else.
Le goto n'est pas AFFREUX, il empêche juste une bonne tracabilité du
programme au moment du débeug.

<hr size="2" width="100%"> Qui ne tente rien...

Ne risque pas d'avoir grand chose !!!

<hr siz="">
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 12
2 août 2005 à 20:12
Si je le trouvais si affreux je ne lui conseillerais pas de l'utiliser, tu crois pas? J'ai dis affreux pour me préparer à des réponses, car en général les personnes on la réaction inverse de la tienne.
Ca veut pas dire non plus que je suis d'accord avec toi, je l'utilise le moins possible. Je vois que tu es étudiant à l'ISEN. Est-ce qu'un seul de tes professeurs t'a déja conseillé d'utiliser le goto en C?
0
mondrone Messages postés 246 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 11 mars 2012
2 août 2005 à 20:35
Non, je n'ai pas dit qu'il fallait l'utiliser et au contraire moi même
je ne l'utilise plus jamais car comme dises justement mes profs, on
peut toujours se débrouiller avec des boucles.

Je disais ca à propos de Goto paske avant l'ISEN, g fait un DUT en elec
et info indus, donc g appris l'asm, et g pu voir avec un certain
paradoxe que toutes les commandes qu'on nous dit d'utiliser à la place
des gotos sont faites elles-mêmes avec des gotos.

<hr size="2" width="100%"> Qui ne tente rien...

Ne risque pas d'avoir grand chose !!!

<hr siz="">
0
adeteine Messages postés 5 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 2 août 2005
2 août 2005 à 20:59
Ne vous batttez pas, effectivement, je suis de la génération GOTO également. Alors xomment voyez-vous les choses ? Où mettre le GOTO ? Je ne vois pas ce que ça va changer. N'oublions pas qu'il faut que j'appuie sur STOP pour arréter le décompte, donc arréter une boucle. J'attends vos réponses pour tester les différentes solutions. Merci encore
0