Порядок событий при запуске окна в Visual C++ MFC

Предположим, что у меня есть класс, производный от CWnd, которые имеют функции обработчика событий OnPaint,OnCreate а также OnSize, Как вы знаете, все они происходят при запуске окна, но я хочу посмотреть, каков порядок между ними.
когда я устанавливаю точку останова в одном из них, после завершения функции управление не передается другому и переходит, например, в один из встроенных файлов.cpp MFC. wincore.cpp?
Как я могу понять порядок? какие-либо ссылки или научить меня, как предотвратить переход управления на встроенные классы MFC?

1 ответ

Порядок поступления сообщений не полностью определен и задокументирован. Однако некоторые сообщения упорядочены по отношению к другим. MSDN прямо заявляет, что WM_NCCREATE отправлено до WM_CREATE, Документация для WM_CREATE имеет еще несколько советов относительно порядка (выделено мое):

Отправляется, когда приложение запрашивает создание окна, вызывая CreateWindowEx или же CreateWindow функция. (Сообщение отправляется до того, как функция вернется.) Оконная процедура нового окна получает это сообщение после того, как окно создано, но до того, как окно станет видимым.

Сразу должно быть ясно, что для получения дополнительных сообщений должно существовать окно. Следовательно, первый WM_SIZE будет отправлен после WM_CREATE, Что касается WM_PAINT это требует, чтобы окно было видимым. Кроме того, это сообщение с низким приоритетом, которое генерируется, только если очередь сообщений пуста.

При создании окна порядок WM_CREATE, WM_SIZE, WM_PAINT,

Если вы заинтересованы только в наблюдении за сообщениями, вы можете использовать такой инструмент, как Spy++ (spyxx.exe), который поставляется с Visual Studio. Он может регистрировать произвольные сообщения и дает вам подробную информацию. Если это для образовательных целей (в отличие от выведения поведения), это очень полезный инструмент.

Примечание для downvoters: Если вы чувствуете, что этот ответ является неточным или нуждается в улучшении, пожалуйста, оставьте записку, чтобы помочь будущим посетителям.

Другие вопросы по тегам