Jump to content
  • Advertisement


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


timers in visual c++?

This topic is 6807 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

Is there a kind of Timer() function I can use to: a) calculate frame rates, b) end a game after a certain amount of time? I only need something that would return the number of seconds since midnight of something. Please Help!! I am very frustrated, and Mike00 isn''t helping!

Share this post

Link to post
Share on other sites
Yes, there is

The SetTimer function creates a timer with the specified time-out value.

UINT SetTimer(
HWND hWnd, // handle of window for timer messages
UINT nIDEvent, // timer identifier
UINT uElapse, // time-out value
TIMERPROC lpTimerFunc // address of timer procedure

Handle to the window to be associated with the timer. This window must be owned by the calling thread. If this parameter is NULL, no window is associated with the timer and the nIDEvent parameter is ignored.
Specifies a nonzero timer identifier. If the hWnd parameter is NULL, this parameter is ignored.
Specifies the time-out value, in milliseconds.
Pointer to the function to be notified when the time-out value elapses. For more information about the function, see TimerProc.
If lpTimerFunc is NULL, the system posts a WM_TIMER message to the application queue. The hwnd member of the message''sMSG structure contains the value of the hWnd parameter.

Return Values
If the function succeeds, the return value is an integer identifying the new timer. An application can pass this value, or the string identifier, if it exists, to the KillTimer function to destroy the timer.

If the function fails to create a timer, the return value is zero. To get extended error information, call GetLastError.

Visit our homepage: www.rarebyte.de.st


Share this post

Link to post
Share on other sites
Not a good idea to calculate framerates from WM_TIMER as it can be influenced by CPU usage and the windows message stack.

You should probably use timeGetTime() as defined in winmm.lib. There are a number of example code snippets that use it to calculate framerates (including some sample code in the direct3d sdk) but I don''t have a URL handy..

Share this post

Link to post
Share on other sites
Just an idea.... you could also use GetTickCount() to do what you want... it gives you the time in miliseconds since windows startup..


Share this post

Link to post
Share on other sites
Guest Anonymous Poster
i''ve always used the timing class available in windoze with msvc++.

Share this post

Link to post
Share on other sites
QueryPerformanceCounter is the best device available to you without using *shudder* DirectX. This is because every other counter either has flaws, or counts too slowly. Using the message system in windows is a joke. WM_TIMER is influenced by EVERYTHING and can''t be trusted to give you an accurate timing of small ammounts of time. The getTickCount() works great, except what happens if you render more than 100 FPS? It can (and will) only return a maximum of 100 times per second. The Performace counter is based on your CPU''s internal clock speed and will not waiver or faulter at all. Here''s a link to the first version of the OpenGL SuperBible. It should have a section entitled "Real-Time Graphics" with a full implementation documentation and explanation.

OpenGL SuperBible:

-- John d8?)

"No, really, I DO know it all!" <-- Yeah, Right!!

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.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!