Bonsoir,

Je vous explique mon problème : J'ai un programme qui comporte 2 threads de comptage (incremente une progressBar). Jusque là tout va bien. Maintenant je dois gerer les threads en fonction des messages.

Un compteur a son propre thread. a la fin du comptage le thread est détruit et recreer pour recommencé le comptage...

diagramme de classe :
ihm->Sablier (par composition)

dans Sablier il y a une methode Execute() pour faire le thread dans ihm.
dans la méthode Execute j'ai :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
UINT Sablier::Execute()
{
	value->SetRange(mini,maxi);
 
        do
	{
		value->SetPos(i);
		Sleep(100);
		i++;
 
	}while(i!=maxi);
 
	ihm->PostMessage(valmess,0,0);
 
	return 0;
}
dans l'ihm pour gerer les messages :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
BEGIN_MESSAGE_MAP(CQuizzDlg, CDialog)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	//}}AFX_MSG_MAP
	ON_BN_CLICKED(B_REPONSE, &CQuizzDlg::OnBnClickedReponse)
	ON_MESSAGE(WM_USER,&CQuizzDlg::FinTempsQuestion)
	ON_MESSAGE(WM_USER+1,&CQuizzDlg::FinTempsQuizz)
END_MESSAGE_MAP()
puis dans la méthode FinTempsQuestion :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
LRESULT CQuizzDlg::FinTempsQuestion(WPARAM,LPARAM)
{
	if(p != Mc.GetTailPosition())
		{
			Mc.GetNext(p);
			Afficher();
		}
	return 0;
}
L'image du programme pour mieux comprendre :


1er probleme débile : Comment faire en sorte que la barre de progression arrive jusqu'au bout ? (pourtant j'ai bien défini les mini et maxi avec Setrange...

2e probleme : a la fin de la 1ere barre de progression (celui du haut) il envoie un message a l'ihm pour que le thread du compteur reparte a zero et change de question. Or mon probleme, la barre s'arrete a la fin et ne redemarre pas sauf la 2e barre de progression (or sa devrait etre l'inverse)? Kesaco ?

Merci a celui qui me remettra sur le bon chemin avec les Sendmessages...