Как найти, кто сгенерировал сообщение Windows - PullRequest
1 голос
/ 06 февраля 2011

У нас очень большое и сложное приложение MFC. По какой-то причине определенный режим для запуска нашего приложения генерирует сообщения WM_SIZE в окно. Это не должно происходить и убивает производительность. Я вижу, как сообщение обрабатывается. Как я могу найти, что или где в коде генерирует сообщение окна?

Примечание: это происходит, когда в приложение подключен инструмент мониторинга производительности. Так что это может быть сторонний инструмент, делающий это.
Но это происходит только в этом конкретном режиме работы, так что это может быть какое-то странное взаимодействие.

Ответы [ 2 ]

1 голос
/ 07 февраля 2011

Вы можете увидеть карту сообщений, чтобы указать, для чего были сопоставлены все окна onSize.

в качестве «не элегантной» альтернативы, вы можете отследить WM_ONSIZE в PreTranslateMessage и увидеть дескриптор окна, используя член hwnd структуры pMsgпередано в PreTranslateMessage.

0 голосов
/ 07 февраля 2011

Как это поможет узнать, кто отправляет сообщение? Я бы предпочел сосредоточиться на решении, таком как задержка обработки сообщения (при условии, что эта обработка отвечает за перфектный удар), когда обнаружена лавина таких сообщений.

например. Если вы получаете слишком много сообщений в течение x миллисекунд, вы можете решить запустить таймер и обрабатывать только последнее сообщение, полученное по истечении таймера. Таким образом, вы обрабатываете максимум одно сообщение в x миллисекунд вместо каждого.

...