用多媒体计时器
DWORD timeGetTime();
DWORD timeGetTime();
解决方案 »
- 模态对话框的句柄如何得到(除了Findwindow)
- VC 按钮按下与弹起
- 控制台程序 socket 每次接受到数据会响吗?
- 不使用ADO,能判断操作系统已经安装了SQLServer吗?
- 散分!!!!!!!!!!
- CRegkey.QueryValue()在winxp sp1下不能使用?急!
- vc中的奇怪问题,请问谁能回答我!
- 高分求救,有谁知道NetworkICE BlackICE Defender Workstation 2.9的注册码?
- recvfrom()怎样用?
- 简单的VC问题!
- 怪事!各位,难道《Thinking in C++》和《C++编程思想》不是一本书?
- 请问如何在缩放图片时防止闪烁啊??
再用另外一个处理线程,检查该标志,以确定时间时间是否触发。
这样做的另外一个原因是,在timeEvent的回调里面不能调用绝大部分API
请看例子。一般是用回调函数,但在回调内不能调大多数API,所以我喜欢用下面的事件对象:
void CMainFrame::OnFileTest()
{
// TODO: Add your command handler code here
timercount=0;
hTimerEvent=CreateEvent(NULL,FALSE,FALSE,NULL);
if (hTimerEvent==NULL)
{
MessageBox("CreateEvent failed","timer");
return;
}
timeGetDevCaps(&tc,sizeof(TIMECAPS));
if (timeBeginPeriod(tc.wPeriodMin)!=TIMERR_NOERROR)
{
MessageBox("timeBeginPeriod failed","timer");
CloseHandle(hTimerEvent);
return;
}
MMRESULT mmres=timeSetEvent(1,0,(LPTIMECALLBACK)hTimerEvent,
(DWORD)GetSafeHwnd(),TIME_PERIODIC|TIME_CALLBACK_EVENT_PULSE);
if (mmres==NULL)
{
MessageBox("timeSetEvent failed","timer");
timeEndPeriod(tc.wPeriodMin);
CloseHandle(hTimerEvent);
return;
}
while (timercount<5000) // 定时周期为1ms,5秒后关闭定时
{
WaitForSingleObject(hTimerEvent,INFINITE);
timercount++;
}
timeKillEvent(mmres);
if (timeEndPeriod(tc.wPeriodMin)!=TIMERR_NOERROR)
{
MessageBox("timeEndPeriod failed","timer");
}
CloseHandle(hTimerEvent);
MessageBox("timer over!","timer");
}