谁有例子 给我看一下  :)

解决方案 »

  1.   

    你说动态链接库里的定时器大概意思是没有窗口的定时器吧?
    其实没有窗口也可以。
    SetTimer的时候第一个参数为null,但第3个参数一定要有,是一个回调函数的地址。
    然后SetTimer的返回值要作为KillTimer的第二个参数用。
    要注意的是你调用的这个线程一定要有消息循环,就是要DispatchMessage,这样才能调用到你设置的回调函数。
    我没有dll里的例子,以前写过一个线程里的例子。不过现在在家,例子在公司里,要的话明天给你。
      

  2.   

    使用带回调函数的SetTimer即可。
      

  3.   

    int i;
    void CALLBACK TimerProc (HWND hwnd, UINT message, UINT iTimerID, DWORD dwTime)
    {
      i=1000;
    }
    extern  "C"  _declspec(dllexport)  int test()
    {
    //AFX_MANAGE_STATE(AfxGetStaticModuleState());
    SetTimer(0,1,100,TimerProc);
    return i;
    }
    我是这样做的 :)为什么不行呢???
      

  4.   

    int i=0;
    void CALLBACK TimerProc (HWND hwnd, UINT message, UINT iTimerID, DWORD dwTime)
    {
      i++;
      MessageBox(0,"定时器在运行","定时器在运行",0);
      if(i==10)
      KillTimer(0,1);
    }
    extern"C"_declspec(dllexport)  int test()
    {
    SetTimer(0,1,100,TimerProc); return i;
    }
    这样就没法停止了,郁闷:(谁帮我解决一下
      

  5.   

    没法停止?
    想任何时候停止就把KillTimer导出,然后停的时候调用
      

  6.   

    // CTimer
    class CTimer
    {
    public: CTimer()
    {
    m_bTimerOn = FALSE;
    } HRESULT TimerOn(DWORD dwTimerInterval)
    {
    m_dwTimerInterval = dwTimerInterval;
    if (m_bTimerOn) // already on, just change interval
    return S_OK; m_bTimerOn = TRUE; // Create thread and pass the thread proc the this ptr
    m_hThread = CreateThread(NULL, 0, &_Apartment, (void*)this, 0, &m_dwThreadID); return S_OK;
    } void TimerOff()
    {
    if (m_bTimerOn)
    {
    m_bTimerOn = FALSE;
    AtlWaitWithMessageLoop(m_hThread);
    }
    }
    // Implementation
    private:
    static DWORD WINAPI _Apartment(void* pv)
    {
    CTimer* pThis = (CTimer*) pv;
    pThis->Apartment();
    return 0;
    } DWORD Apartment()
    {
    CoInitialize(NULL);
    HRESULT hRes; while(m_bTimerOn)
    {
    Sleep(m_dwTimerInterval);
    if (!m_bTimerOn)
    break; OnTimer();
    } CoUninitialize();
    return 0;
    }// Attributes
    public:
    DWORD m_dwTimerInterval;
    virtual void _OnTimer()=0;// Implementation
    private:
    HANDLE m_hThread;
    DWORD m_dwThreadID;
    BOOL m_bTimerOn;
    };
      

  7.   

    启动一个线程:
    UNIT Thread_Time(LPVOID )
    {
         while(EventStop)
         { 
              Sleep(100000);//等待10秒
              Do();         //定时做的事情
          } 
    }
      

  8.   

    兄弟!你没仔细看我的回复啊?
    UINT_PTR hTimer = 0;
    int i=0;
    void CALLBACK TimerProc (HWND hwnd, UINT message, UINT iTimerID, DWORD dwTime)
    {
      i++;
      MessageBox(0,"定时器在运行","定时器在运行",0);
      if(i==10)
      KillTimer(0,hTimer);
    }
    extern"C"_declspec(dllexport)  int test()
    {
    hTimer = SetTimer(0,1,100,TimerProc); return i;
    }