怎么样在一个main为入口的win32程序里开定时器?就是没有窗口句柄的情况下。

解决方案 »

  1.   

    UINT_PTR SetTimer(
      HWND hWnd,              // handle to window
      UINT_PTR nIDEvent,      // timer identifier
      UINT uElapse,           // time-out value
      TIMERPROC lpTimerFunc   // timer procedure
    );
    用回调函数TIMERPROC lpTimerFunc
      

  2.   

    楼上说的,
    hWnd ->NULL返回值作为该计时器的标识
      

  3.   

    在没有窗口句柄的情况下 SetTimer是不可能成功的 第一个参数设置为NULL只能说明该Timer用的时候主窗口的
      

  4.   

    可以没有窗口,但是不能没有消息循环,我曾经在服务中使用过SetTimer。
      

  5.   

    可以使用带回调函数的SetTimer函数
      

  6.   

    //////////////////////////////////////////////////////////////////////
    //定时器函数:当语音记录仪一直没有相应时
    void CALLBACK WaitForSoundDevProc(HWND hwnd, UINT msg, UINT idTimer, DWORD dwTime)
    {
    CPlay* pDM=static_cast<CPlay*>(pPlay);

    if(!g_bIsHandShake)
    {
    if(IDYES==MessageBox( g_hMsgWnd,"语音记录仪没有响应,是否继续重演?","提示",MB_ICONINFORMATION|MB_YESNO))
    {
    pDM->Begin();
    }
    } KillTimer(hwnd,idTimer);
    return;
    }
    SetTimer(NULL,1,10000,(TIMERPROC)WaitForSoundDevProc);
      

  7.   

    大家的程序不知道在以
    CallBack()
    {
    }
    int main()
    {
    SetTimer(0,1,1000,CallBack);
    Sleep(100000);
    }
    根本就没有触发回调。