функция winmain () / c ++ - PullRequest
       47

функция winmain () / c ++

1 голос
/ 22 декабря 2011

Не могли бы вы объяснить мне значение этого утверждения, обычно написанного в конце функции WinMain():

   return (int) msg.wParam;

Я привык заканчивать свои консольные приложения с помощью return 0;, это неправильно дляWindows-приложения?

Спасибо.

Ответы [ 3 ]

3 голосов
/ 22 декабря 2011

Цикл GetMessage() останавливается после получения сообщения окна WM_QUIT, которое обычно выдается после вызова функции PostQuitMessage(), котораяописывает его nExitCode параметр как код завершения приложения .

Если вы хотите уважать намерения человека, который вызвал функцию PostQuitMessage(), вы должны вернуть это значение из main.Это то, что вы делаете, когда вы возвращаете wParam, полученный из последнего вызова GetMessage().

2 голосов
/ 22 декабря 2011

С первое попадание в поиске Google

Ваш WinMain должен инициализировать приложение, отобразить его основной и введите цикл поиска и отправки сообщений, который является структура управления верхнего уровня для оставшейся части приложения выполнение. Завершить цикл сообщения, когда он получает WM_QUIT сообщение. В этот момент ваш WinMain должен выйти из приложения, возвращает значение, переданное в параметре wParam сообщения WM_QUIT. Если WM_QUIT был получен в результате вызова PostQuitMessage, значение wParam является значением функции PostQuitMessage Параметр nExitCode. Для получения дополнительной информации см. Создание сообщения. Loop.

2 голосов
/ 22 декабря 2011

Из WinMain() документов (http://msdn.microsoft.com/en-us/library/windows/desktop/ms633559.aspx):

Завершить цикл обработки сообщений при получении сообщения WM_QUIT. При этом точка, ваш WinMain должен выйти из приложения, возвращая значение передается в параметре WM_QUIT сообщения wParam. Если WM_QUIT было полученный в результате вызова PostQuitMessage, значение wParam значение параметра PostQuitMessage функции *1013*.

...