我想给我的计时器写一个回拨。我对TimerProc的定义如下:

void CALLBACK TimerProc(HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime)
{
    //body of callback
}

然后SetTimer定义如下:
myTimer = SetTimer(NULL,Timer_ID,30000,TimerProc);

我的问题是,回调在超过30秒的时间内从未被调用过。
谢谢你的帮助。

最佳答案

SetTimer通过向默认窗口过程发送WM_TIMER消息来工作。因此,正如MSDN所述:
指定TimerProc回调函数时,默认窗口过程在处理WM_TIMER时调用回调函数。因此,您需要在调用线程中分派消息,即使您使用TimerProc而不是处理WM_TIMER。
因此,请确保您有一个Message Loop运行。

10-06 06:54