Ma pause s'éffectue avant l'éxécution du code la précédant

Arnor2000 Messages postés 32 Date d'inscription mercredi 17 mars 2004 Statut Membre Dernière intervention 24 novembre 2004 - 28 avril 2004 à 02:26
Arnor2000 Messages postés 32 Date d'inscription mercredi 17 mars 2004 Statut Membre Dernière intervention 24 novembre 2004 - 29 avril 2004 à 00:56
Bonjour,
J'ai cette procédure :

Sub Pause(p As Integer, Delai As Integer)
    Dim Debut As Long
    'met en rouge l'écran du joueur qui va jouer et fait une pause
    Plateau(p).BackColor = &HFF&
    Beep
    Debut = Timer
    Do While Timer < Debut + Delai
        lblTemps = Timer 'Pour témoin
    Loop
    Beep
    Plateau(p).BackColor = &H8000000F
End Sub


Le but de cette procédure est de mettre en rouge le plateau de jeu du joueur p, de faire une pause de longueur Delai et de remettre le plateau de la couleur normale.

Le problème viens du fait que l'on ne vois pas le plateau se mettre en rouge. En fait le formulaire n'a pas l'air d'être réactualisé car lblTemps que j'ai mis comme témoin n'est pas du tout modifier lui non plus.
Par contre si je met un point d'arrêt sur Debut Timer ou à l'intérieur de ma boucle sur lblTemps Timer, à ce moment là le formulaire est réactualisé : le plateau deviens rouge et lblTemps affiche le temps du timer.
Vraiment bizarre.

Au départ j'utilisais la fonction sleep et ca me faisait la même chose alors c'est pas ca la solution...

J'ai l'impression que c'est un bug de vb et si s'en est un je veux bien que quelqu'un m'aide à le contourner !

Merci beaucoup d'avance !

4 réponses

cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
28 avril 2004 à 08:23
Tu Peux Essayer

Public Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)

Puis pour utiliser sleep tu Fais
Sleep 4000 (pour 4 secondes)

It@li@
0
Arnor2000 Messages postés 32 Date d'inscription mercredi 17 mars 2004 Statut Membre Dernière intervention 24 novembre 2004
28 avril 2004 à 13:15
Comme je l'ai dis à la fin de mon message, au début j'utilisais la fonction sleep et comme ca faisait ce problème j'ai fini par changer pour mieux maitriser toutes les facteurs, vu que la fonction timer renvoie seulement le nombre de seconde écoulée depuis minuit, c'est plus sûr, mais ca ne marche pas quand même...
0
Arnor2000 Messages postés 32 Date d'inscription mercredi 17 mars 2004 Statut Membre Dernière intervention 24 novembre 2004
28 avril 2004 à 22:00
En fait ma pause s'éxécute même avant un msgbox placé deux procédures plus tot !

Normalement je dois avoir mon msgbox qui s'affiche et le code s'arrête tant que je n'ai pas appuyer sur son bouton OK, mais là ma procédure pause s'éxécute et ensuite mon msgbox !

Je ne comprend vraiment pas pourquoi !

Aidez-moi SVP !
0
Arnor2000 Messages postés 32 Date d'inscription mercredi 17 mars 2004 Statut Membre Dernière intervention 24 novembre 2004
29 avril 2004 à 00:56
OUF !

J'ai réussit à résoudre mon problème !

Pour ceux que ca intéresse :
La fonction sleep ou toute autre pause enpèche le raffraichissement du formulaire tant qu'elle n'est pas effectuée.

J'ai vu ca sur http://www.progotop.com/api.php?id=191

Il faut donc raffraichir sa form à la main en utilisant la fonction UpdateWindow décrite là :
http://www.progotop.com/api.php?id=197
qui a besoin besoin du numéro de la form (souvent c'est 1) à raffraichir que l'ont peut obtenir avec la fonction GetActiveWindow décrite ici :
http://www.progotop.com/api.php?id=56
et le tour est joué !

Merci beaucoup à Dark Sidious pour son site qui m'a vraiment aidé !
0
Rejoignez-nous