我使用VC中SetTimer的一点高级经验(不是MFC的SetTimer)
直接用API的形式调用,其中uElapse是回调函数的执行时间间隔
UINT uTimerID = SetTimer(NULL , NULL , uElapse , (TIMERPROC)TimerProc);
然后建立一个回调函数
VOID CALLBACK TimerProc(
HWND hwnd, // handle to window
UINT uMsg, // WM_TIMER message
UINT_PTR idEvent, // timer identifier
DWORD dwTime // current system time
)
{
//做你需要做的事情
}
最后,可以用KillTimer(uTimerID);来停止时间器的执行。
不过有一个问题,如果你在一个线程中调用SetTimer的话,TimerProc回调函数永远不会执行!我使用的方法是发送一个进程消息,在消息处理中调用SetTimer。不知有没有更好的做法?(我知道我的做法已经很笨了)