settimer:用实例学习Ontimer和SetTimer

voidCActiveXClockCtrl::OnTimer(UINTnIDEvent)
{
InvalidateControl(NULL);
//COleControl::Refresh();
COleControl::OnTimer(nIDEvent);

}
我对Ontimer不是太清楚,nIDEvent的作用是什么?
InvalidateControl(NULL);是不是redraw的意思,可是我设计的时钟总是不更新时间呢,除非手动改变大小时会更新时间。
是不是我的interval没有设置好?
相关程序如下:
intCActiveXClockCtrl::OnCreate(LPCREATESTRUCTlpCreateStruct)
{
if(COleControl::OnCreate(lpCreateStruct)==-1)
return-1;
//建立定时器,时间间隔为m_updateInterval的值
SetTimer(1,(UINT)m_updateInterval,NULL);
return0;
}


----------------------------------------------------------------------

nIDEvent的作用是什么?
===============================================
SetTimer(1,(UINT)m_updateInterval,NULL);
里面的1就是和OnTimer的参数nIDEvent对应的啦。
也可以使用SetTimer(2,3000,NULL);
SetTimer(3,2000,NULL);
可以设定多个,OnTimer里用nIDEvent进行区分,
switch(nIDEvent)
{
case1:
...............
break;
case2:
...............
break;
case3:
...............
break;
}

--------------------------------------------------------

nIDEvent的作用是什么?
===============================================
你可以设置多个时间控件,
nIDEvent这个参数用来标识这些不同的控件

--------------------------------------------------------

nIDEvent的作用是什么?
===============================================
您可以在您的的程序中设置多个定时器,他们发送的都是WM_TIMER消息,wTimerID=wParam;
所以当使用了多个定时器的情况下,在响应WM_TIMER时,一定要要先检查wTimerID(也就是在SetTimer()的第一个参数指定的,也就是OnTimer(UINTnIDEvent)的参数)。

SetTimer(1,(UINT)m_updateInterval,NULL);
里面的1就是和OnTimer的参数nIDEvent对应的啦。
也可以使用SetTimer(2,3000,NULL);
SetTimer(3,2000,NULL);
可以设定多个,OnTimer里用nIDEvent进行区分,
switch(nIDEvent)
{
case1:
...............
break;
case2:
...............
break;
case3:
...............
break;
}
InvalidateControl(NULL)让整个控件redraw,您把COleControl::OnTimer(nIDEvent);注释掉试试
Tags:  delphisettimer mfcsettimer vcsettimer settimer

延伸阅读

最新评论

发表评论