| |
|
|
| Yo hoffe veces, lo son todavía no entsprechende Incluir
Dieser Temporizador verspricht una höhere Genauigkeit, como el Profaneigene, o. el normalle API-Temporizador. El Incluir selber benötigt una Callback con 5 Parametern, sowie una Callback con 0 Parametern se je Temporizador benötigt. Hay a Tiempo also max. 5 Temporizador posible, el Source berücksichtigt aber ya todos 16
Vor el ersten Verwendung el Características es siempre TimerInit() aufzurufen, welche 1 en el Erfolgsfalle zurückgibt. Zum aufräumen es al Ende TimerEnd aufzurufen, el auch todos Temporizador killt.
HighResTimer.inc KompilierenMarcaSeparaciónAutor: TS-Soft (Thomas Schulz)
basiert auf C-Source von Danilo Krahn
Unterliegt der LGPL
Def timeGetDevCaps(2) !winmm.dll, timeGetDevCaps
Def timeEndPeriod(1) !winmm.dll, timeEndPeriod
Def timeKillEvent(1) !winmm.dll, timeKillEvent
Def timeSetEvent(5) !winmm.dll, timeSetEvent
Struct TIMECAPS = wPeriodMin&, wPeriodMax&
Declare TimerResolution#
Dim TimerResolution#, TIMECAPS
Declare TimerHandles&[15]
Declare TimerProc&[15]
Proc TimerInit
Declare Result&
Result& = timeGetDevCaps(TimerResolution#, SizeOf(TimerResolution#))
If Result& <> 0
Return 0 Initialisierung fehlgeschlagen
Else
Return 1
EndIf
EndProc
Proc TimerEnd
Declare ID%
timeEndPeriod(TimerResolution#.wPeriodMin&)
WhileLoop 0, 15
ID% = &Loop
If TimerHandles&[ID%] > 0
timeKillEvent(TimerHandles&[ID%])
EndIf
Wend
Dispose TimerResolution#
EndProc
Proc TimerCallBack
parameters TimerHwnd&, Message&, TimerID&, wParam&, lParam&
If TimerProc&[TimerID&] <> 0
Call(TimerProc&[TimerID&])
EndIf
EndProc
Proc TimerStart
parameters TimerID&, Delay&, ProcAddr&
If TimerID& < 0 Or TimerID& > 15
Return 0
Else
If TimerHandles&[TimerID&] <> 0
timeKillEvent(TimerHandles&[TimerID&])
EndIf
TimerProc&[TimerID&] = ProcAddr&
TimerHandles&[TimerID&] = timeSetEvent(Delay&, 0, ProcAddr(TimerCallBack, 5), TimerID&, 1)
Return TimerHandles&[TimerID&]
EndIf
EndProc
Proc TimerStop
parameters TimerID&
If TimerID& < 0 Or TimerID& > 15
Return 0
Else
If TimerHandles&[TimerID&] <> 0
timeKillEvent(TimerHandles&[TimerID&])
Return 1
EndIf
Return 0
EndIf
EndProc
Proc TimerGetMinResolution
Return TimerResolution#.wPeriodMin&
EndProc
Proc TimerGetMaxResolution
ENDPROC
Und ahora todavía una simplen Testcode: KompilierenMarcaSeparación Viel Spaß así |
|
|
| |
|
|
|
| Hab todavía una bissel getestet, Delayzeiten bajo 10 ms nimmt el XProfan-Runtime krumm |
|
|
| |
|
|