我有一个全局函数(它不属于任何类):void MyFunction()
{
 SetTimer(1,1000,NULL);
}这样编译不通过。
怎样做才能在我的MyFunction()里调用SetTimer?
注意这样好像不行  ::SetTimer(NULL,1,1000,NULL);即用API好像不行。

解决方案 »

  1.   

    用::SetTimer
    然后定义一个回调函数。注意,你这个程序必须有消息循环
      

  2.   

    kingcom_xu先生∶能再具体些吗?回掉函数怎么定义?为什么要有消息循环?
      

  3.   

    如果这个计时器不属于任何对话框,那么就要用到回掉函数,参看MSDN中对计时器的解释。
    计时器的时间是通过系统处理WM_TIMER实现的,所以当然要有消息循环。
      

  4.   

    下面的这段代码,可以实现每2秒弹出一个MessageBox,难道还用什么消息循环吗?VOID CALLBACK TimerProc( HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime ){
    AfxMessageBox("CallBack");
    }void MyFunction()
    {
    ::SetTimer(NULL,1,2000,TimerProc);
    }void CMyProjectDlg::OnOK() 
    {
    MyFunction();

    }
      

  5.   

    普通的windows程序本身就有消息循环,你不需要了解消息循环就已经在工作了。而win32 console application程序默认是没有消息循环的,所以你需要在程序中自己去实现。