[Résolu] Souci avec SendMessage()
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:
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:
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:
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 :
http://imageshack-france.com/out.php/i267460_quizz.jpg
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...