没有合适的资源?快使用搜索试试~ 我知道了~
介绍了多媒体定时器的相关函数及用法。
资源推荐
资源详情
资源评论
Multimedia Timers
多媒体定时器服务,允许应用程序确定定时器事件的时间周期,那使应用程序在指定的时间间隔内,可以请求或接收定时器消息.
About Multimedia Timers
Using Multimedia Timers
Multimedia Timer Reference
About Multimedia Timers
多媒体定时器服务,允许应用程序使用最高精确度,来调度定时器的事件,这与硬件平台有关,这些多媒体定时器服务允许你采用比
其他定时器精度高的多的定时器来响应定时器事件.
这些定时器服务,对于要求高精度时间的应用程序非常有用,例如,MIDI 音序器需要一个高精度定时器,因为它必需在 1 毫秒内处理
多个 MIDI 事件.
应用程序若不需要高精度时间,应该使用 SetTimer 函数代替多媒体定时器服务,这个定时器服务只需用 SetTimer 发送
WM_TIMER 消息到一个消息队列,当多媒体定时器服务调用一个回调函数时,应用程序若需等待定时器应该使用
CreateWaitableTimer
函数.
Using Multimedia Timers
这部分包含例子,示范如何实现如下任务。
Obtaining and Setting Timer Resolution
Starting a Single Timer Event
Writing a Timer Callback Function
Canceling a Timer Event
Obtaining and Setting Timer Resolution
下面的例子是在设置任何定时器事件前,调用 timeGetDevCaps 函数确定被定时器服务支持的定时器精度的最小和最大值. 此例
通过使用 timeBeginPeriod
函数确定定时器精度的最小值.
#de$ne TARGET_RESOLUTION 1 // 1-millisecond target resolution
TIMECAPS tc;
UINT wTimerRes;
if (timeGetDevCaps(&tc, sizeof(TIMECAPS)) != TIMERR_NOERROR)
{
// Error; application can't continue.
}
wTimerRes = min(max(tc.wPeriodMin, TARGET_RESOLUTION), tc.wPeriodMax);
timeBeginPeriod(wTimerRes);
Starting a Single Timer Event
开始一个单一的定时器事件,应用程序必须调用 timeSetEvent 函数, 回调函数执行前要指定时间数量,精度、回调函数的地址 (见
TimeProc), 和用户数据与回调函数一起提供. 应用程序可以像如下所示的方法,开始一个单一定时器事件.
UINT SetTimerCallback(NPSEQ npSeq, // sequencer data
UINT msInterval) // event interval
{
npSeq->wTimerID = timeSetEvent(
msInterval, // delay
wTimerRes, // resolution (global variable)
OneShotCallback, // callback function
(DWORD)npSeq, // user data
TIME_ONESHOT ); // single timer event
if(! npSeq->wTimerID)
return ERR_TIMER;
else
return ERR_NOERROR;
}
回调函数 OneShotCallback 的实例, 见 Writing a Timer Callback Function.
Writing a Timer Callback Function
如下所示的回调函数,使单一定时器事件的标识符无效并且调用一个定时器例程处理应用程序指定的任务, 更多信息见 TimeProc.
void CALLBACK OneShotTimer(UINT wTimerID, UINT msg,
DWORD dwUser, DWORD dw1, DWORD dw2)
{
NPSEQ npSeq; // pointer to sequencer data
npSeq = (NPSEQ)dwUser;
npSeq->wTimerID = 0; // invalidate timer ID (no longer in use)
TimerRoutine(npSeq); // handle tasks
}
Canceling a Timer Event
应用程序在释放包含回调函数的内存前,必须调用 timeKillEvent 函数删除任何活动中的定时器。删除一个定时器事件,可利用下
面的方法.
void DestroyTimer(NPSEQ npSeq)
{
if(npSeq->wTimerID) { // is timer event pending?
timeKillEvent(npSeq->wTimerID); // cancel the event
npSeq->wTimerID = 0;
}
}
Multimedia Timer Reference
这部分描述与多媒体定时器服务有关的函数和结构,根据功能按如下分组介绍:
――检索系统时间――
MMTIME
timeGetSystemTime
timeGetTime
――检索定时器信息――
TIMECAPS
timeGetDevCaps
――时间事件――
timeKillEvent
TimeProc
timeSetEvent
――时间周期――
剩余13页未读,继续阅读
资源评论
xj_wang_xyfk
- 粉丝: 0
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功