2011-02-06 35 views
1

我们有一个非常大的,复杂的MFC应用程序。 出于某种原因,运行我们的应用程序的特定模式是生成WM_SIZE消息到窗口。它不应该发生,并在杀害性能。 我可以看到正在处理的消息。 我如何才能找到代码中的什么或哪里,生成窗口消息?如何找到谁生成了Windows消息

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

回答

1

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

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

0

它有助于了解谁发送消息?我更愿意专注于解决方案,比如在检测到雪崩的消息时延迟处理消息(假设该处理负责perf命中)。

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

+0

好吧,我试着评论出OnSize处理程序,但这只是导致一个空白窗口。真的WM_SIZE消息不应该在这种情况下发生,所以我想解决什么是产生它。 – meissnersd 2011-02-08 12:11:23