Лайт Ягами
Искусственный Интеллект
(282258)
5 лет назад
Потому что PostQuitMessage принимает код завершения программы, а не номер события WM_QUIT.
Почему работает при значениях, отличных от нуля, да потому что программа может завершиться с любым кодом возврата, но есть такая договорённость, что 0 означает благополучный выход без ошибки, а любые значения кроме нуля - ошибку под соответствующим номером.
В большинстве своём это ничего не значит, если ты не запускаешь программу из-под другой программы или из bat-файла, где проверяешь этот код возврата и как-нибудь на него реагируешь по-разному при разных значениях. Ну или если запускаешь из командной строки как-то так: программа1 && программа2 - то программа2 запустится только если программа1 выйдет с кодом возврата 0.
При этом WM_QUIT = 0x0012 (не равен 0), но так и при выбросе WM_QUIT работает?