我记得以前vc版本好像有timer控件的,现在没有了。
我想让程序在每一段时间都调用一个方法,请问这该怎么做
多谢

解决方案 »

  1.   

    SetTimer
    以后响应WM_TIMER消息
    在OnTimer函数中进行操作即可
      

  2.   

       呵呵,看来是我和别的搞混了:)
       那么你说的SetTimer 是CDateTimeCtrl的成员方法吗?
      

  3.   

    UINT SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD) );CWnd类的函数
    一般可以第一个设置计时器的id  第二个设置时间间隔  第三个一般填NULL
    调用以后会自动执行OnTimer中的内容
      

  4.   

    不过要记得不用的时候调用killtimer();
    :)
      

  5.   

    给你个例子吧:有一个button,和一个progress控件
    #define TIMERID 1000
    void CComputeDlg::OnStart() 
    {
    MSG message; m_nTimer = SetTimer(TIMERID, 100, NULL); // 1/10 second
    ASSERT(m_nTimer != 0);
    GetDlgItem(IDC_START)->EnableWindow(FALSE);
    volatile int nTemp;
    for (m_nCount = 0; m_nCount < nMaxCount; m_nCount++) {
    for (nTemp = 0; nTemp < 10000; nTemp++) {
    // uses up CPU cycles
    }
    if (::PeekMessage(&message, NULL, 0, 0, PM_REMOVE)) {
    ::TranslateMessage(&message);
    ::DispatchMessage(&message);
    }
    }
    CDialog::OnOK();
    }void CComputeDlg::OnTimer(UINT nIDEvent) 
    {//在这里处理你的WM_TIMER 消息,如果要结束可以调用KillTimer(TIMERID)
    CProgressCtrl* pBar = (CProgressCtrl*) GetDlgItem(IDC_PROGRESS1);
    pBar->SetPos(m_nCount * 100 / nMaxCount);
    }
      

  6.   


       pMF->m_timer=SetTimer(1,2000,0);
       怪事阿,为什么编译没有通过
       提示error C2660: 'SetTimer' : 
          function does not take 3 parameters
      

  7.   

    注意调用的地方 如果不是在CWnd类内部的话 调用的是API函数
    那时原型是
    UINT_PTR SetTimer(
      HWND hWnd,              // handle to window
      UINT_PTR nIDEvent,      // timer identifier
      UINT uElapse,           // time-out value
      TIMERPROC lpTimerFunc   // timer procedure
    );
      

  8.   

    SetTimer
    以后响应WM_TIMER消息
    在OnTimer函数中进行操作即可
      

  9.   

    UINT_PTR SetTimer(
      HWND hWnd,              // handle to window
      UINT_PTR nIDEvent,      // timer identifier
      UINT uElapse,           // time-out value
      TIMERPROC lpTimerFunc   // timer procedure
    );
      

  10.   

        CWnd* wnd=::AfxGetMainWnd();
        pMF->m_timer=SetTimer(wnd->m_hWnd,1,2000,0);    我的是多文档工程,ontime的方法是在一个dlg类
    中实现的。结果发现没有反应,是哪儿错了?
        实在感谢大侠了!
      

  11.   

    在需要变化的地方KillTimer然后再重新SetTimer