Aidez moi svp, pb visual c++

Résolu/Fermé
Djule - 18 nov. 2005 à 21:14
 Djule - 19 nov. 2005 à 14:06
Voila, j'ai déja posté un message exposant ce probleme que je n'ai malheuresement toujours pas résolu.

En gros je voudrais qu' en cliquant sur un bouton se situant dans une boite de dialogue, une instruction (Partie 1) s'execute puis que la boite de dialogue se mettent a jour. Jusqu'ici rien de bien compliqué :)

Mais je voudrais que au bout de 3 secondes (apres la 1re mise a jour de la boite de dialogue) , il y ait une seconde instruction (Partie 2) qui s'execute suivie d'une nouvelle mise a jours dans la boite de dialogue.

A priori le codage de tout ca ne semble pas trop poser de pb mais voila 3 jours que je m'arrache les cheveux devant.

Voila le programme que j'ai créé :

void CProjetDlg::OnOK() 
{
	
	UpdateData(TRUE);
	dlg_rep_user=m_rep;
	
	//Partie 1
	m_verif=Verification();
	UpdateData(FALSE);

	Sleep(30);
                     
         //Partie 2
	dlg_quest=quest();
	dlg_rep=trad();
	m_ang=dlg_quest;
	m_rep="";
	drap=0;
	UpdateData(FALSE);

}


Hors a l'execution de se programme, lorsque je clique sur le bouton ok, il n'y a pas deux mise a jours de la boite de dialogue mais une seule qui se produit apres le timer. Et je ne vois vraiment pas pourquoi puisque le Updata(FALSE) est bien appelé juste apres l'instruction 1.

Voyez vous un moyen d'obtenir se que je voudrais.

PS: le pb ne viens pas du timer puisque le meme resultat se produit losque je le remplace par le codage suivant :

long start, end;
	time(&start);
	do
	{
		time(&end);
	} while(end-start<3);


Je pense plutot que le probleme viens du UpdateData.
A voir également:

3 réponses

mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 7 752
18 nov. 2005 à 23:29
Le problème c'est que ton programme doit se séparer en deux puisque le updatedata se fait en parallèle du sleep. Et ça, ça se fait avec un fork(). Car actuellement ca doit faire update, puis sleep, puis update.

Bonne chance
0
Merci pour ta reponse

Mais peu tu m'en dire un peu plus car je ne vois pas trop comment changer mon code de plus je ne connais pas du tout fork(), et ne sais comment l'utiliser.
0
mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 7 752
19 nov. 2005 à 02:27
Reflexe du programmeur : Google dit
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man2/fork.2.html

Y a même un exemple ;)

Bonne chance
0
Merci pour tes reponse mamiemando, on m'a cependant conseillé plus simple :

pour info UpdateWindow juste apres le Updatedata(FALSE) marche tres bien!!!
0