Jump to content
  • Advertisement


This topic is now archived and is closed to further replies.


Timeing it all up????

This topic is 6192 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

My question has to do with creating a reliable timer that fires every few secconds. I am aware of the fact that windows has a WM_TIMER message handling and setup for timers using the WinAPI but the way my engine works I have all my windows handling and message handling stuff in one .h and .cpp file called window.h/.cpp. So my problem is that I want to start a timer in my main.cpp file and be able to set variables from my message handler. Could I create a class to work with with the two files or how can I do this antoher way? I know of setting the GetTickCount and that works great for just a few effects but the other timer works out better for me right now.. how can I work around this.. and does this even make sense? It''s quite early right now but hey thats life of coding.. Thanks for all and any help, Also does anyone know of any examples of timers etc that I could take a look at? Thanks, David

Share this post

Link to post
Share on other sites
In answer to first question...Yes you can pass info between files such as the timer stuff...
One way is to use global variables and the extern command
for example: in your windows.cpp file you might make a variable name LONGLONG Timer; in your main.cpp you can access that variable with the declaration extern LONGLONG Timer;
Then you simply use that variable in that file as though you created it in that file...
Another way is to make a function in your windows.cpp file which does your timer stuff....define that function in windows.h then include windows.h in your main.cpp file...passing in pointers or simply returning a value depending on how much info you need...this should be the prefferred method i think as global variables are to be avoided when possible...

Question 2 alternate way of doing timers...i am not sure what the internals of the Gettickcount function is but the timers i use are these...which are probably the same as the GetTickCount()
LONGLONG Cur_Time; // current time

LONGLONG Time_Count_1sec;
LONGLONG Perf_cnt; // performance timer frequency

BOOL Perf_Flag=FALSE; // flag determining which timer to use

LONGLONG Next_Time=0; // time to render next frame

LONGLONG Next_Time_1sec; // time for next 1 sec interval

LONGLONG Last_Time=0; // time of previous frame

double Time_Elapsed; // time since previous frame

double Time_Scale; // scaling factor for time

if (QueryPerformanceFrequency((LARGE_INTEGER *) &Perf_cnt))

// yes, set time_count and timer choice flag

QueryPerformanceCounter((LARGE_INTEGER*) &Next_Time); ; //function that grabs the time and stores it in Next_Time

Time_Scale=1.0/Perf_cnt; //used in equation to measure elapsed time

// no performance counter, read in using timeGetTime

/************TIME COUNT VARIABLES*******/
Time_Count_1sec=100; //sets the time in ms to activate loop...1000ms is 1 second

// no performance counter, read in using timeGetTime

// Last_Time=timeGetTime();

// save time of last frame

while (notDone) //game loop


// use the appropriate method to get time

// and calculate elapsed time since last frame

if (Perf_Flag)
QueryPerformanceCounter((LARGE_INTEGER *) &Cur_Time);

//amount of time passed since last render frame


// save frame time

if (Cur_Time>Next_Time_1sec)
// letter+=AddLetter();

// set time for next frame

Next_Time_1sec = Cur_Time + Time_Count_1sec;

//ADD in any code you want done once per second here

//End of extra code done once per second


All this code is in my winmain
i basically just move the numbers around to get the various timers i need
I almost forgot to mention i got most of this code from sams teach yourself dx7 in 24hour book as well as off other helpful postings from people on this group with a few minor modifications
hope this helps

Edited by - MarkO on August 8, 2001 8:02:23 AM

Share this post

Link to post
Share on other sites

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!