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

解决方案 »

  1.   

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

  2.   

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

  3.   

    nIDEvent的作用是什么?
    ===============================================
    您可以在您的的程序中设置多个定时器,他们发送的都是WM_TIMER消息,wTimerID = wParam;
    所以当使用了多个定时器的情况下,在响应WM_TIMER时,一定要要先检查wTimerID(也就是在SetTimer()的第一个参数指定的,也就是OnTimer(UINT nIDEvent)的参数)。SetTimer(1, (UINT)m_updateInterval, NULL);
    里面的1就是和OnTimer的参数nIDEvent对应的啦。
    也可以使用SetTimer(2, 3000, NULL);
    SetTimer(3, 2000, NULL);
    可以设定多个,OnTimer里用nIDEvent进行区分,
    switch(nIDEvent)
    {
    case 1:
    ...............
    break;
    case 2:
    ...............
    break;
    case 3:
    ...............
    break;
    }
    InvalidateControl(NULL)让整个控件redraw,您把COleControl::OnTimer(nIDEvent);注释掉试试
      

  4.   

    可以redraw,但是无法由时钟自动redraw啊.
    希望有人帮忙啊。
      

  5.   

    [email protected]我邮箱,谢谢