我做了一个老鼠走迷宫的游戏,在响应上下左右键的消息控制老鼠走动的同时。还要在一开始启用一个计时器,在20秒后如果没有走到终点就弹出对话框。
我不知道这是不是一个多线程问题,但是在我另一个MFC版本的程序中我把SetTimer放到绘图函数中要么报错,要么没动静。
(有点离题但是我很想搞清楚为什么)
现在我是用OpenGL画的迷宫,WinMain创建了窗口,如何用计时器?请各位高人帮助一下!
我不知道这是不是一个多线程问题,但是在我另一个MFC版本的程序中我把SetTimer放到绘图函数中要么报错,要么没动静。
(有点离题但是我很想搞清楚为什么)
现在我是用OpenGL画的迷宫,WinMain创建了窗口,如何用计时器?请各位高人帮助一下!
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);
}
是不是在这回调函数里修改?如何改?
然后在上面的函数里加case WM_TIMER,在分支里写你想写的代码。
case WM_TIMER:
{
MessageBox(NULL,"你输了","杯具了",MB_OK);
KillTimer(NULL,1);
return 0;
}
在WinMain里面这样写SetTimer(NULL,1,5000,NULL),运行没有反应
2、void CALLBACK TimeProc(HWND hwnd,UINT message,UINT iTimerID,DWORD dwTime)
HWND hWnd, // handle of window for timer messages 你的窗口句柄,不要給NULL
UINT nIDEvent, // timer identifier
UINT uElapse, // time-out value
TIMERPROC lpTimerFunc // address of timer procedure
);