我建了一个基于对话框的Project,用SetTimer函数设置定时器,用OnTimer函数来响应,但是现在我想做两个定时器,一个是5ms,一个是5min,如何分别设置和响应呢?
解决方案 »
- MFC 函数waveInOpen()
- **********陷阱!为什么vc6明明import "msxml.dll" 而实际用的是msxml3.dll?顶者有分!
- 采集到一段声音数据,如何在这段缓冲区中分析出波形的大小,不要求绘图.
- 初学者问题:错在哪里?----谢谢!
- 19992003接分!
- 大哥大姐们能否给一个检测某个IP存在与否的源代码?
- 树与图标,难题? 不可能?
- 问一个关于SQL的问题
- FormView问题??????????
- 用c语言做的lib库 有没有main函数啊?用c做lib库 是手动做,还是在vs里面自动生成好?如何做比较好呢
- ado 内存管理,请高手指点!
- VC_ATL_BHO 编程问题:如何进行网址的重定向?
#define ID_TIMER2 200
SetTimer( ID_TIMER1 , 5 , NULL );
SetTimer( ID_TIMER2 , 5*60*1000 , NULL );在void CXXXDlg::OnTimer(UINT nIDEvent) 中:
if( nIDEvent == ID_TIMER1 )
{
// 这是ID_TIMER1触发对应的处理
}
else if( nIDEvent == ID_TIMER2 )
{
// 这是ID_TIMER2触发对应的处理}CDialog::OnTimer(nIDEvent);
SetTimer(2, 300000, NULL)OnTimer(UINT nIDEvent)
{
switch(nIDEvent)
{
case 1:
... //Your code here
case 2:
... //Your code here
}}
{
if(nIDEvent==ID_CLOCK1)
.....
if(nIDEvent==ID_CLOCK1)
.....
}
SetTimer(ID_CLOCK1,5,NULL); //5 ms
SetTimer(ID_CLOCK2,300000,NULL; //5 min
SetTimer(2,300000,NULL);OnTimer(...)
{
if (nIDEvent==1)
...
else if(nIDEvent==2)
...
}
在以前,Timer的精确度依据于软件产生的时钟中断,每秒18.2次,精度约为55ms但现在情况已有所不同,我在Windows 2000下测试了一下,Timer的精度可以达到10ms如果楼主要使用更高精确度的Timer,那么就要使用多媒体时钟了
如:
{
static long tt=0,ts=0,te=0;
tt++;
ts++;
te++;
if(tt>2)
{
tt=0;
aaaa();
}
if(ts>10)
{
ts=0;
bbb();
}
if(te>30)
{
te=0;
ccc();
}
}