2011-02-06 33 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