Почему эта программа правильно отображает окно сообщения, но не устанавливает уровень ошибки?
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
MessageBox(NULL, _T("This should return 90 no?"), _T("OK"), MB_OK);
return 90;
}
Я скомпилировал приведенный выше код с именем исполняемого файла a.exe. Я сделал это в командной строке:
c:\> a.exe
(message box is displayed, I press ok)
c:\> echo %ERRORLEVEL%
0
Я получаю те же результаты, если использую exit(90);
прямо перед возвратом. Это все еще говорит 0
.
Я также пытался запустить программу с помощью CreateProcess
и получить результат с помощью GetExitCodeProcess
, но он также возвращает 0
мне. Я сделал проверку ошибок, чтобы убедиться, что все было запущено правильно.
Первоначально я видел эту проблему в более сложной программе, поэтому я создал эту простую программу для проверки проблемы. Результаты одинаковы, обе программы, которые имеют WinMain
, всегда возвращают 0
.
Я попробовал оба варианта компиляции x64, x86 и unicode и MBCS. Все дают 0
в качестве уровня ошибки / кода состояния.