Я работаю над игрой для 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 in WinMain
из WinProc
, чтобы, если пользователь нажимает кнопку закрытия, выходит из игры способом, отличным от того, что игра находится в игровом меню, программа не продолжала работать в памяти. (Как это было, когда я тестировал это без оператора game_cont..
в WinProc
.
Да, и кстати, GameRun
- это, по сути, логическое значение, которое возвращает false, когда игра заканчивается, и true в противном случае.
WM_QUIT
и обрабатыватьWM_DESTROY
, вызываяPostQuitMessage
. - person Ben Voigt   schedule 06.12.2013