3 c++ windows winapi global-variables
我正在开发一款Windows游戏,我有这个:
bool game_cont;
LRESULT WINAPI WinProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_QUIT: case WM_CLOSE: case WM_DESTROY: game_cont = false; break;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
int WINAPI WinMain(/*lots of parameters*/)
{
//tedious initialization
//game loop
while(game_cont)
{
//give message to WinProc
if(!GameRun()) game_cont = false;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更好的方法来做到这一点(暂时忽略计时器和c)而不是game_cont全球化.总之,我需要能够退出,而在WinMain从WinProc,所以如果用户按下关闭出局的方式等,该游戏在游戏菜单,程序不会保留在内存中运行.(正如我在没有game_cont..声明的情况下测试时所做的那样)WinProc.
哦,并且在旁注中,GameRun基本上是一个bool,在游戏结束时返回false,否则为true.
Dan*_*uez 10
是的,使用PeekMessage,它是游戏开发的标准.
我相信这是最好的方法:
int Run()
{
MSG msg;
while(true)
{
if(::PeekMessage(&msg,0,0,0 PM_REMOVE))
{
if(msg.message == WM_QUIT ||
msg.message == WM_CLOSE ||
msg.message == WM_DESTROY)
break;
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
else
{
//Run game code
if(!GameRun())
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
另外,看看这个(特别是第一个答案)
| 归档时间: |
|
| 查看次数: |
1949 次 |
| 最近记录: |