Je voudrais utiliser la librairie pureBasic Tools pour faire un chronomètre précis au centième de seconde. Quelqu'un pourrais-t'il me dire si réellement je pourrais obtenir un chrono fiable.
Merci
Henri

Code : Tout sélectionner
temps = GetTickCount_()
; tu fais ton action
temps = GetTickCount_() - temps
debug "Le temps mis est de " + str(temps) + "ms"
Code : Tout sélectionner
Declare MonChrono()
Global temp$
Global DixiemeSecondes
Global Secondes
DixiemeSecondes=0
Secondes=0
OpenWindow(1, 100, 100, 500, 200, #PB_Window_SystemMenu, "Chrono")
CreateGadgetList(WindowID())
StringGadget(2,200, 10, 200, 20, "")
StartTimer( 0, 100, @MonChrono() )
SetGadgetText(2, Temp$)
Repeat
Delay(10)
Until WaitWindowEvent() = #PB_Event_CloseWindow
Procedure MonChrono()
Temp$=FormatDate("%hh:%ii:%ss", Date())
DixiemeSecondes=DixiemeSecondes+1
If DixiemeSecondes>9
DixiemeSecondes=0
Secondes=Secondes+1
EndIf
DixiemeSeconde$=Str(DixiemeSecondes)
Seconde$=Str(Secondes)
SetGadgetText(2, Seconde$+":"+DixiemeSeconde$)
EndProcedure
Code : Tout sélectionner
Enumeration
#Fenetre_principale
#Image
#Gadget_Image
EndEnumeration
Global Largeur_fenetre.l, Hauteur_fenetre.l, IDImage.l, Pi.f, Depart.l
Procedure Dessine_Aiguille(Longueur.l, Angle.f, CX.l, CY.l, Couleur.l)
LineXY(CX, CY, CX + Longueur * Cos(Angle), CX + Longueur * Sin(Angle), Couleur)
EndProcedure
Procedure Dessine_Pendule()
IDImage = CreateImage(#Image, Largeur_fenetre, Hauteur_fenetre)
StartDrawing(ImageOutput())
CX.l = Largeur_fenetre / 2
CY.l = Hauteur_fenetre / 2
Box(0, 0, Largeur_fenetre, Hauteur_fenetre, #White)
Box(1, 1, Largeur_fenetre - 2, Hauteur_fenetre - 2, $400000)
Dessine_Aiguille(CX * 0.6, Pi * (2 * Hour(Date()) / 12 - 1 / 2), CX, CY, #Yellow)
Dessine_Aiguille(CX * 0.8, Pi * (2 * Minute(Date()) / 60 - 1 / 2), CX, CY, #Green)
Dessine_Aiguille(CX * 0.75, Pi * (2 * Second(Date()) / 60 - 1 / 2), CX, CY, #Red)
Milliseconde = (ElapsedMilliseconds() - Depart) % 1000
Dessine_Aiguille(CX * 0.75, Pi * (2 * Milliseconde / 1000 - 1 / 2), CX, CY, #Blue)
StopDrawing()
SetGadgetState(#Gadget_Image, IDImage)
EndProcedure
;
;
;
Sortie = #FALSE
Largeur_fenetre = 240
Hauteur_fenetre = 240
Pi = 3.14159265
Depart = ElapsedMilliseconds()
If OpenWindow(#Fenetre_principale, 0, 0, Largeur_fenetre, Hauteur_fenetre, #PB_Window_BorderLess | #PB_Window_ScreenCentered, "PureBasic Chrono")
AddKeyboardShortcut(#Fenetre_principale, #PB_Shortcut_Escape, #PB_Shortcut_Escape)
If CreateGadgetList(WindowID(#Fenetre_principale))
ImageGadget(#Gadget_Image, 0, 0, Largeur_fenetre, Hauteur_fenetre, IDImage)
EndIf
Milli = SetTimer_(0, 0, 1, @Dessine_Pendule())
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Sortie = #TRUE
Case #PB_Event_Menu
Select EventMenuID()
Case #PB_Shortcut_Escape
Sortie = #TRUE
EndSelect
EndSelect
Until Sortie
EndIf
End
Merci! c' est exactement ce que je cherchais!!!Très utile aussi: timerid=SetTimer(0,0,t,@proc())
lance la procédure proc() toute les t millisecondes.
Pratique pour les animations de fond.
Il y a évidemment KillTimer_(hwnd,timerid) pour le stopper (hwnd=handle de la fenêtre qui a lancé le timer)