Heeft uw auto pijn? Ga dan naar de onderdelenlijn
Het bedrijf waar ik met veel plezier werk - Mijn eigen vertrouwde domein
Verwijderd
Op www.pscode.com staan tig voorbeelden! Scheelt je heel veel werk! Maar die gebruiken idd een timer...
ik gebruik zelf altijd de volgende API functie:
Private Declare Function timeGetTime Lib "winmm.dll" () As Long
je kunt dan als programmaloop het volgende gebruiken:
StartTime = timeGetTime
NextFrameTime = 100 + StartTime '(100 is het aantal milliseconden dat je wilt wachten)
voer hier je programmacode voor de scroller uit.
Do While timeGetTime < NextFrameTime
DoEvents
Loop
voordeel van deze API functie is dat je programma altijd doorloop, terwijl de VB timer een zeer lage prioriteit heeft en dus overgeslagen wordt als Windows vindt dat ie wat beters te doen heeft.
Private Declare Function timeGetTime Lib "winmm.dll" () As Long
je kunt dan als programmaloop het volgende gebruiken:
StartTime = timeGetTime
NextFrameTime = 100 + StartTime '(100 is het aantal milliseconden dat je wilt wachten)
voer hier je programmacode voor de scroller uit.
Do While timeGetTime < NextFrameTime
DoEvents
Loop
voordeel van deze API functie is dat je programma altijd doorloop, terwijl de VB timer een zeer lage prioriteit heeft en dus overgeslagen wordt als Windows vindt dat ie wat beters te doen heeft.
There are 10 types of people in the world: Those who understand binary, and those who don't. .
Op maandag 21 januari 2002 15:40 schreef Xanion het volgende:
[...]
voordeel van deze API functie is dat je programma altijd doorloop, terwijl de VB timer een zeer lage prioriteit heeft en dus overgeslagen wordt als Windows vindt dat ie wat beters te doen heeft.
4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1
Verwijderd
Vanwaar deze vraag? we hadden 'm immers Hier al beantwoord lijkt me?Op donderdag 17 januari 2002 15:12 schreef Mr-FaTMeN het volgende:
Hoe kan ik heb beste de tekst laten weg schrijven.
voor een scroller
Helaas, de VB timer doet al raar bij intervallen van minder dan 55 ms. Zie ook dit stuk uit de VB documentatie.Op maandag 21 januari 2002 23:33 schreef johnwoo het volgende:
[..]
voor zover ik weet gebruikt het timer object intern gewoon de settimer en killtimer API calls in user32. Het is wel zo dat deze timer bij intervallen kleiner dan ongeveer 10 ms wel eens raar doet, maar timer events worden echt niet overgeslagen hoor... En die timer draait natuurlijk gewoon op de prioriteit van jouw app, lijkt me weinig uitmaken welke API call je doet.
it has the very lowest level in the hierarchy of the Windows event/message generating system; that is, the timer event/message may be postponed, or even not be generated at all, if there is any other event that in the queue
Voor events waarbij het niet erg is dat deze een keer iets later wordt uitgevoerd of een keer overgeslagen is de timer perfect. Maar als jij een programma maakt waarbij je precies iedere zoveel ms een stuk code uitgevoerd wilt hebben, moet je de VB timer niet pakken.
There are 10 types of people in the world: Those who understand binary, and those who don't. .
SetTimer is dependent op de snelheid waarmee jij je message queue leegtrekt omdat ie een WM_TIMER message post. Hierdoor wordt het ding vooral op Win9x systemen waar de task scheduling verneukt is erg inaccuraat. Absoluut niet aan te raden om deze aanpak voor intervals onder de 100ms te gebruiken.Op maandag 21 januari 2002 23:33 schreef johnwoo het volgende:
voor zover ik weet gebruikt het timer object intern gewoon de settimer en killtimer API calls in user32. Het is wel zo dat deze timer bij intervallen kleiner dan ongeveer 10 ms wel eens raar doet, maar timer events worden echt niet overgeslagen hoor... En die timer draait natuurlijk gewoon op de prioriteit van jouw app, lijkt me weinig uitmaken welke API call je doet.
Voor echt precieze timing issues moet je aan de kernelmode timed synchronization (Sleep en SetWaitableTimer).
Pagina: 1