1

我们有一个非常庞大、复杂的 MFC 应用程序。出于某种原因,运行我们的应用程序的特定模式正在向窗口生成 WM_SIZE 消息。它不应该发生并且正在扼杀性能。我可以看到消息得到处理。 如何在代码中找到生成窗口消息的内容或位置?

注意:当我们将性能监控工具挂接到应用程序时,往往会发生这种情况。所以它可能是第三方工具在做这件事。
但它只发生在这种特定的操作模式中,所以它可能是某种奇怪的交互。

4

2 回答 2

1

您可以看到消息映射以指定所有窗口的 onSize 已被映射。

作为“不优雅”的替代方案,您可以在 PreTranslateMessage 中捕获 WM_ONSIZE 并查看使用在 PreTranslateMessage 中传递的 pMsg 结构的 hwnd 成员的窗口句柄。

于 2011-02-06T21:06:16.220 回答
0

知道谁发送了消息有什么帮助?我宁愿专注于解决方案,例如在检测到此类消息雪崩时对消息进行延迟处理(假设此处理负责性能命中)。

例如,如果您在 x 毫秒内收到太多消息,您可能会决定启动一个计时器并在计时器结束时只处理收到的最后一条消息。这样,您每 x 毫秒最多处理一条消息,而不是每条消息。

于 2011-02-06T22:21:02.143 回答