В соответствии с GetMessage API из библиотеки MSDN может возвращать -1 при возникновении ошибки. В документе приведен фрагмент кода распространенной ошибки, которого следует избегать:
while (GetMessage( lpMsg, hWnd, 0, 0)) ...
Документ гласит:
Возможность возврата -1
означает, что такой код может привести к летальному исходу
ошибки приложения. Вместо этого используйте код
как это:
BOOL bRet;
while( (bRet = GetMessage( &msg, hWnd, 0, 0 )) != 0)
{
if (bRet == -1)
{
// handle the error and possibly exit
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
Мой вопрос заключается в том, что в каждом примере кода, включая приложение по умолчанию, созданное из Visual Studio от Microsoft, основной цикл сообщений выглядит следующим образом:
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
Обратите внимание, что второй параметр GetMessage, указанный выше, имеет значение NULL. Если приведенный выше код действителен, означает ли это, что GetMessage здесь НИКОГДА не возвращает -1, так что обработка возвращаемого значения -1 не требуется?