Правильное возвращаемое значение «WindowProc» в приложении Win32 - PullRequest
6 голосов
/ 10 января 2011

В документации MS32 по Win32-Api (на http://msdn.microsoft.com/en-us/library/ms633573%28VS.85%29.aspx) на WindowProc указано: Возвращаемое значение является результатом обработки сообщения и зависит от отправленного сообщения.

Поскольку я должен реализовать эту (обратный вызов) процедуру, я хотел бы знать, от чего она зависит, и что я должен вернуть. Может кто-нибудь пролить свет на это?

Ответы [ 2 ]

9 голосов
/ 10 января 2011

Это зависит от того, какое именно сообщение вы обрабатываете. Вам нужно обратиться к документации по этому сообщению, чтобы увидеть ожидаемые значения и значения возвращаемого значения.

Например, для WM_CREATE вы должны вернуть ноль, чтобы продолжить создание окна, и -1, чтобы завершить работу и уничтожить окно. Для WM_GETICON вы должны вернуть маркер к значку вашего окна.

Для сообщений, которые вы явно не обрабатываете, вы должны вызвать DefWindowProc , передав ему все параметры в ваш оконный процесс и вернуть его возвращаемое значение вызывающей стороне.

3 голосов
/ 10 января 2011

Ответ Михаила отлично отвечает на вопрос, но просто для справки обычное возвращаемое значение всегда будет 0. Для большинства сообщений это означает, что ваше приложение обработало сообщение. Но всегда обращайтесь к странице MSDN, чтобы узнать точное сообщение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...