Ik ben met visual c++ bezig en heb nu een statusbalk met de tijd. Alleen krijg ik dus de tijd te zien op het moment dat het scherm gecreeerd wordt. Weet iemand hoe je een bepaalde module uit een class om de seconde kan aanroepen ofzo, zodat de tijd loopt?
je kan toch bij de waarde die je in het begin krijgt elke seconde 1 sec bij optellen? dan heb je een lopende tijd
Kijk eens in de help naar de CTimer class.
https://fgheysels.github.io/
Ik zit te klooien met die berichten, maar echt lukken wil het niet. Als ik de message in WM_SIZE zet en dan de boel resize werkt het perfect. Ik kan er alleen nog niet achter komen hoe ik een bericht elke seconde kan laten plaatsvinden. Kan dat in de switch die alles verwerkt??
SetTimer ()
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Verwijderd
Nou zeg, als je weet hoe je een WM_SIZE afvangt kun je ook wel achter SetTimer() en WM_TIMER komen.
Volgens de MSDN (heb je toch wel gelezen?) ziet SetTimer() er zo uit:
Volgens de MSDN (heb je toch wel gelezen?) ziet SetTimer() er zo uit:
Als je nou die lpTimerFunc gewoon NULL laat (staat ook in de MSDN) dan post windows elk timerinterval een WM_TIMER in je applicatie's messagequeue...UINT_PTR SetTimer(
HWND hWnd, // handle to window
UINT_PTR nIDEvent, // timer identifier
UINT uElapse, // time-out value
TIMERPROC lpTimerFunc // timer procedure
);
Ik heb inderdaad ook de msdn gelezen, maar mij gaat het er om waar ik SetTimer neer moet zetten? Plus die timerId.. Ik heb de timer geen id gegeven dus wat moet ik daar invullen en hetzelfde geld voor de 3 variabele....Op zaterdag 18 mei 2002 19:12 schreef Qlone het volgende:
Nou zeg, als je weet hoe je een WM_SIZE afvangt kun je ook wel achter SetTimer() en WM_TIMER komen.
Volgens de MSDN (heb je toch wel gelezen?) ziet SetTimer() er zo uit:
[..]
Als je nou die lpTimerFunc gewoon NULL laat (staat ook in de MSDN) dan post windows elk timerinterval een WM_TIMER in je applicatie's messagequeue...
Denk eraan dat een Windows timer een 'soft timer' is; dat wil zeggen dat je er niet van uit kunt gaan dat je je events met een bepaalde nauwekeurigheid of periode ontvangt.
Als je, als respons op een timer event, je klok bijwerkt ('n seconde erbij ofzo) dan is de kans dus groot dat de weergegeven tijd op den duur gaat verlopen ten op zichte van de 'echte' tijd.
Als je, als respons op een timer event, je klok bijwerkt ('n seconde erbij ofzo) dan is de kans dus groot dat de weergegeven tijd op den duur gaat verlopen ten op zichte van de 'echte' tijd.
Verwijderd
Maar zo'n timer is redelijk nauwkeurig. Ok... je moet niet op een paar honderdste seconden gaan kijken en 't hangt maar helemaal af van hoe een programma zijn messages verwerkt, maar voor 't bijhouden van iets knulligs als een klokje werkt 't prima. Dan springt ie maar eens per half uur 2 seconden door ipv 1Als je, als respons op een timer event, je klok bijwerkt ('n seconde erbij ofzo) dan is de kans dus groot dat de weergegeven tijd op den duur gaat verlopen ten op zichte van de 'echte' tijd.
hWnd: Handle naar je main window of in ieder geval 't window wat de message moet ontvangen. Dat window heb je zelf gemaakt, dus die handle heb je.Ik heb inderdaad ook de msdn gelezen, maar mij gaat het er om waar ik SetTimer neer moet zetten? Plus die timerId.. Ik heb de timer geen id gegeven dus wat moet ik daar invullen en hetzelfde geld voor de 3 variabele....
nIDEvent: Vul maar in wat je leuk vindt. Als je maar 1 timer hebt hoef je hier niet eens op te controleren in je WM_TIMER handler. Als je meerdere timers hebt, vul hier dan een nummertje in zodat je 'm terug kan vinden als de message komt.
uElapse: Doh.
lpTimerFunc: NULL, want je wilt WM_TIMER messages ontvangen ipv er een callback voor schrijven.
Ik snap niet helemaal hoe je aan je vraag komt eigenlijk. Windows programmeren is niet makkelijk en als je al zo ver komt dat je een window kunt maken en WM_SIZE af kunt vangen enzo, waarom kom je dan hier niet achter? (geen flame, no offence, gewoon benieuwd
Verwijderd
Met de appwizard kan je 'n aardig eindje komen hoor..Op zaterdag 18 mei 2002 23:50 schreef Qlone het volgende:
Windows programmeren is niet makkelijk en als je al zo ver komt dat je een window kunt maken en WM_SIZE af kunt vangen enzo, waarom kom je dan hier niet achter? (geen flame, no offence, gewoon benieuwd)
Verwijderd
In sommige gevallen zou ik zeggen 'jammer genoeg wel'. Het programmeergebeuren wordt op deze manier zo enorm onderschat...Met de appwizard kan je 'n aardig eindje komen hoor..
Ik moet zeggen dat ik 't nooit onderzocht heb, maar ik kan me voorstellen dat als je een CD'tje brand of iets uitprint zo'n timer message aardig vertraagd kan worden.Op zaterdag 18 mei 2002 23:50 schreef Qlone het volgende:
Maar zo'n timer is redelijk nauwkeurig. Ok... je moet niet op een paar honderdste seconden gaan kijken en 't hangt maar helemaal af van hoe een programma zijn messages verwerkt, maar voor 't bijhouden van iets knulligs als een klokje werkt 't prima. Dan springt ie maar eens per half uur 2 seconden door ipv 1.
Nou, ik heb hele applicaties in C geschreven en mijn ervaring is dat dat gewoon veel tijd kost in vergelijking met het gebruik van de AppWizard (of de MFC C++ wrapper classes, ik heb die dingen nooit los gebruikt). Ik denk dus dat dat ding zeker wel handig is.In sommige gevallen zou ik zeggen 'jammer genoeg wel'. Het programmeergebeuren wordt op deze manier zo enorm onderschat...
Ik ben wel met je eens dat, om er goed gebruik van te maken, je moet weten hoe het onderliggende systeem werkt (en hoe je het dus 'handmatig' zou hebben moeten doen). Dat is echter geen argument om de AppWizard niet te gebruiken.
Verwijderd
Dat heb ik ook niet gezegdDat is echter geen argument om de AppWizard niet te gebruiken.
Kijk eens naar de SetTimer() function en vang de WM_TIMER message op.
Of anders: buy a book.
Note: je kunt een timer id toevoegen/maken door een resource bij te maken. Op het resource - tabblad rechtsklikken, Resource symbols, New; daar geef je dan een naam en een value aan een nieue resource. In dit geval bv: ID_MY_TIMER en als value 1. die ID_MY_TIMER kun je dan als timerid gebruiken in SetTimer()
Of anders: buy a book.
Note: je kunt een timer id toevoegen/maken door een resource bij te maken. Op het resource - tabblad rechtsklikken, Resource symbols, New; daar geef je dan een naam en een value aan een nieue resource. In dit geval bv: ID_MY_TIMER en als value 1. die ID_MY_TIMER kun je dan als timerid gebruiken in SetTimer()
https://fgheysels.github.io/
Verwijderd
Grin, draadje niet gelezen voor je op reply ramde ?Op zondag 19 mei 2002 02:57 schreef whoami het volgende:
Kijk eens naar de SetTimer() function en vang de WM_TIMER message op.
Die timer wordt alleen maar gebruikt om de tijd van de statusbalk te updaten. En het lijkt me nou niet echt bepaald handig om bij de start van het programma de tijd op te vragen, en dan bij elke WM_TIMER een seconde erbij op te tellenOp zaterdag 18 mei 2002 23:01 schreef Soultaker het volgende:
Denk eraan dat een Windows timer een 'soft timer' is; dat wil zeggen dat je er niet van uit kunt gaan dat je je events met een bepaalde nauwekeurigheid of periode ontvangt.
Als je, als respons op een timer event, je klok bijwerkt ('n seconde erbij ofzo) dan is de kans dus groot dat de weergegeven tijd op den duur gaat verlopen ten op zichte van de 'echte' tijd.
Voor het doel van de timer (de klok updaten) speelt precisie dus totaal geen rol
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Pagina: 1