我想使用定时器,msdn没看出什么,请教哪位详细说说OnTimer,KillTimer,SetTimer,的功能和参数含义,并且何时使用,谢谢

解决方案 »

  1.   

    int CMONEView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
    {
    if (CView::OnCreate(lpCreateStruct) == -1)
    return -1;

    // TODO: Add your specialized creation code here
    SetTimer(1,50,NULL);//1为定时器编号,50为50毫秒 return 0;
    }void CMONEView::OnTimer(UINT nIDEvent) 
    {
    // TODO: Add your message handler code here and/or call default
    CView::OnTimer(nIDEvent);
    }void CMONEView::OnDestroy() 
    {
    CView::OnDestroy();

    // TODO: Add your message handler code here
    KillTimer(1);//1为定时器编号

    }
      

  2.   

    我觉得你就用mfc的CWnd类下的成员比较方便。
    1、调用SetTimer,设置一个时钟,第一个参数为时钟的标识,用一整数即可,第二个参数为时间间隔,第三个设为NULL.
    2、重载OnTimer,在CWnd类或是其派生泪下有一WM_TIMER消息。类是代码如下:
    void CRecordSrvView::OnTimer(UINT nIDEvent) 
    {
    switch(nIDEvent)
    {
    case RECORD_PLAN_EVENT:
    CheckRecordPlan();
    break;
    case CHECK_RECORD_EVENT:
    CheckVideoStatus();
    break; default:
    break;
    }

    CEditView::OnTimer(nIDEvent);
    }3、当你不用定时器时,KillTimer(nId),参数时在SetTimer中的时钟标识为同一值。
      

  3.   

    我觉得你就用mfc的CWnd类下的成员比较方便。
    1、调用SetTimer,设置一个时钟,第一个参数为时钟的标识,用一整数即可,第二个参数为时间间隔,第三个设为NULL.
    2、重载OnTimer,在CWnd类或是其派生泪下有一WM_TIMER消息。类是代码如下:
    void CRecordSrvView::OnTimer(UINT nIDEvent) 
    {
    switch(nIDEvent)
    {
    case RECORD_PLAN_EVENT:
    CheckRecordPlan();
    break;
    case CHECK_RECORD_EVENT:
    CheckVideoStatus();
    break; default:
    break;
    }

    CEditView::OnTimer(nIDEvent);
    }3、当你不用定时器时,KillTimer(nId),参数时在SetTimer中的时钟标识为同一值。
      

  4.   

    UINT SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD) );第一个参数是要设置的定时器的标志,第二个是间隔,第三个是回调函数,一般为NULL就可以。OnTimer 是响应WM_TIMER 消息的函数,设置定时器后,每nElapse微秒调用一次。
    用完就用KillTimer 传递SetTimer时的第一个参数给他,杀掉该定时器
      

  5.   

    OnTimer设置定时器.举个例子,我在CmainFrame::OnCreate方法,增加用来设置定时器的代码。
    int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {if(CMDIFrameWnd::OnCreate(lpCreateStruct)==-1)
    return –1;

    //增加你的代码
    SetTimer(1,500,NULL);}
    通过ClassWizard为CMainFrame增加下列消息处理函数:
     CMainFrame
     OnTimer
     WM_TIMER
     
    CMainFrame
     OnDestroy
     WM_DESTROY
    在CMainFrame::OnTimer方法中,增加用来启动定时器的代码。
    void CMainFrame::OnTimer(UINT nIDEvent)
    {
    //增加你的代码
    }
    在CMainFrame::OnDestroy方法中,增加在主窗口撤销时中止定时器的代码。
    void CMainFrame::OnDestroy()
    {
    CMDIFrameWnd::OnDestroy();
    //增加你的代码
    KillTimer(1);
    }