// Media Timer.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#include <mmsystem.h>
#pragma comment(lib, "winmm.lib")
#define ONE_MILLI_SECOND 10 // 定义1ms和2s时钟间隔, 以ms为单位 ;
#define TWO_SECOND 2000
#define TIMER_ACCURACY 1 // 定义时钟分辨率, 以ms为单位
UINT wAccuracy; // 定义分辨率
void WINAPI onTimeFunc(UINT wTimerID, UINT msg, DWORD dwUser, DWORD dwl, DWORD dw2);
int _tmain(int argc, _TCHAR* argv[])
{
MMRESULT timer_id;
int n = 0;
TIMECAPS tc;
// 利用函数timeGetDevCaps取出系统分辨率的取值范围, 如果无错则继续;
if (timeGetDevCaps(&tc, sizeof(TIMECAPS)) == TIMERR_NOERROR)
{
wAccuracy = min(max(tc.wPeriodMin, //分辨率的值不能超出系统的取值范围
TIMER_ACCURACY), tc.wPeriodMax);
// 调用timeBeginPeriod函数设置定时器的分辨率
timeBeginPeriod(wAccuracy);
// 设置定时器
timer_id = timeSetEvent(ONE_MILLI_SECOND, wAccuracy, (LPTIMECALLBACK)onTimeFunc, DWORD(1), TIME_PERIODIC);
if (NULL == timer_id)
{
printf("timeSetEvent() failed with error %d\n", GetLas
多媒体定时器 C的实现
最新推荐文章于 2024-10-19 12:21:22 发布
本文档演示了如何使用C语言结合Windows API实现一个多媒体定时器。通过timeGetDevCaps获取系统时间分辨率范围,timeBeginPeriod设置定时器精度,timeSetEvent创建定时器并设置回调函数,最后使用timeKillEvent释放定时器并恢复时间分辨率。

最低0.47元/天 解锁文章
1407

被折叠的 条评论
为什么被折叠?



