Я работаю над игрой для 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;
}
и мне интересно, есть ли лучший способ сделать это (игнорируя таймеры и т. Д. Прямо сейчас), чем game_cont
быть глобальным. Короче говоря, мне нужно иметь возможность выйти из while в WinMain
из WinProc
, так что, если пользователь нажимает на закрытие игры не так, как в меню игры, программа не будет продолжать работать в объем памяти. (Как это было, когда я проверял это без оператора game_cont..
в WinProc
.
Да, и на заметке: GameRun
- это, по сути, bool, который возвращает false, когда игра заканчивается, и true в противном случае.