Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

WinAPI :: Последнее сообщение оконной процедуры PostQuitMessage

Важный советчик Мастер (2165), закрыт 5 лет назад
Почему в примерах пишут PostQuitMessage(0), а цикл приложения завершается при встречи WM_QUIT.
При этом WM_QUIT = 0x0012 (не равен 0), но так и при выбросе WM_QUIT работает?
Дополнен 5 лет назад
При выбросе PostQuitMessage(WM_QUIT), приложение тоже завершается
Лучший ответ
Лайт Ягами Искусственный Интеллект (282258) 5 лет назад
Потому что PostQuitMessage принимает код завершения программы, а не номер события WM_QUIT.
Почему работает при значениях, отличных от нуля, да потому что программа может завершиться с любым кодом возврата, но есть такая договорённость, что 0 означает благополучный выход без ошибки, а любые значения кроме нуля - ошибку под соответствующим номером.
В большинстве своём это ничего не значит, если ты не запускаешь программу из-под другой программы или из bat-файла, где проверяешь этот код возврата и как-нибудь на него реагируешь по-разному при разных значениях. Ну или если запускаешь из командной строки как-то так: программа1 && программа2 - то программа2 запустится только если программа1 выйдет с кодом возврата 0.
Важный советчикМастер (2165) 5 лет назад
Но ведь программа возвращает значение в WinMain
Важный советчикМастер (2165) 5 лет назад
аа или функция просто выбрасывает WM_QUIT а присланный параметр кладет в wParam сообщения?
Лайт Ягами Искусственный Интеллект (282258) да
Остальные ответы
Slava m Искусственный Интеллект (174353) 5 лет назад
When the thread retrieves the WM_QUIT message from its message queue, it should exit its message loop and return control to the system. The exit value returned to the system must be the wParam parameter of the WM_QUIT message
Похожие вопросы