我想在dll中使用定时器,给我一个例子吧。

解决方案 »

  1.   

    如果你的DLL中没有接收WM_TIMER 消息的窗体句柄,你就不能使用CWnd定时器功能。可以新建线程的方法间接实现定时器的功能,即在线程函数内部按指定的时间间隔定期调用伪Timer函数。
        以下为线程函数的部分代码,调用WaitForSingleObject函数,通过等待一个非信号态的信号量引发超时,进而达到等待的目的(用Sleep也可以实现的)HANDLE  hEvent = CreateEvent(NULL,FALSE,FALSE,"MyTimer");
    if(hEvent)
    {
    ResetEvent(hEvent); while(true)
    {
    if(hEvent)
    {
    WaitForSingleObject(hEvent,1000);
    ResetEvent(hEvent);
    //调用伪TIMER函数
    }
    }//end while
    }
      

  2.   

    好复杂,我也试过了,由于我是用作dll插入,所以不能用回调函数,就不能用timeproc,我有没有窗体的句柄,就干脆用while算了。
      

  3.   

    建立继承有消息循环的类,然后就可以了。
    比如说可以继承CWnd或CWinThread