我做了一个老鼠走迷宫的游戏,在响应上下左右键的消息控制老鼠走动的同时。还要在一开始启用一个计时器,在20秒后如果没有走到终点就弹出对话框。
我不知道这是不是一个多线程问题,但是在我另一个MFC版本的程序中我把SetTimer放到绘图函数中要么报错,要么没动静。
(有点离题但是我很想搞清楚为什么)
现在我是用OpenGL画的迷宫,WinMain创建了窗口,如何用计时器?请各位高人帮助一下!

解决方案 »

  1.   

    LRESULT CALLBACK WndProc( HWND hWnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam)
    {
    switch (uMsg)
    {
    case WM_ACTIVATE:
    {
    if (!HIWORD(wParam))
    {
    active=TRUE;
    }
    else
    {
    active=FALSE;
    } return 0;
    } case WM_SYSCOMMAND:
    {
    switch (wParam)
    {
    case SC_SCREENSAVE:
    case SC_MONITORPOWER:
    return 0;
    }
    break;
    } case WM_CLOSE:
    {
    PostQuitMessage(0);
    return 0;
    } case WM_KEYDOWN:
    {
    keys[wParam] = TRUE;
    return 0;
    } case WM_KEYUP:
    {
    keys[wParam] = FALSE;
    return 0;
    } case WM_SIZE:
    {
    ReSizeGLScene(LOWORD(lParam),HIWORD(lParam));  
    return 0;
    }

    }
    return DefWindowProc(hWnd,uMsg,wParam,lParam);
    }
    是不是在这回调函数里修改?如何改?
      

  2.   

    用SetTimer设置定时器.
    然后在上面的函数里加case WM_TIMER,在分支里写你想写的代码。
      

  3.   

    在分支中写代码,不需要OnTimer了吧?
      

  4.   

    这样写了
    case WM_TIMER:
    {
         MessageBox(NULL,"你输了","杯具了",MB_OK);
                         KillTimer(NULL,1);
    return 0;
    }
    在WinMain里面这样写SetTimer(NULL,1,5000,NULL),运行没有反应
      

  5.   

    haha ~~~楼主的头像很*很暴力!
      

  6.   

    1、SetTimer(1,1000*1,TimeProc);//计时器
    2、void  CALLBACK TimeProc(HWND hwnd,UINT message,UINT iTimerID,DWORD dwTime)
      

  7.   

    UINT SetTimer(
      HWND hWnd,              // handle of window for timer messages 你的窗口句柄,不要給NULL
      UINT nIDEvent,          // timer identifier
      UINT uElapse,           // time-out value
      TIMERPROC lpTimerFunc   // address of timer procedure
    );