求教SetTimer函数的用法,该如何处理

求教SetTimer函数的用法
代码如下:
ULONG i=0;
char buffer[32]="";
void CALLBACK TimerFunc(HWND handle,ULONG uMsg,ULONG timerid,DWORD timecount)

i++;
wsprintf(buffer,"%d",i);
MessageBox(NULL,buffer,NULL,MB_OK);
}

void TestSetTimer()
{
   ULONG TimerID=SetTimer(NULL,0,1000,(TIMERPROC)TimerFunc);
  if(TimerID==0)
  {
  MessageBox(NULL,"SetTimer error",NULL,MB_OK);
  //return FALSE;
  }
}

问题:
1.回调函数里不会执行弹出窗口。而主函数改成if(TimerID!=0)时,会正常每1秒弹出一个窗口。
这个怎么解释?
2.怎么才能让回调函数正常执行?

------解决方案--------------------
SetTimer总是通过WM_TIMER消息来完成工作的,所以你必须确保你的程序中有消息循环。
------解决方案--------------------
引用:
SetTimer总是通过WM_TIMER消息来完成工作的,所以你必须确保你的程序中有消息循环。


peekmessage创建消息队列