1

非常に大規模で複雑なMFCアプリケーションがあります。何らかの理由で、アプリケーションを実行するための特定のモードは、ウィンドウへのWM_SIZEメッセージの生成です。それは起こってはならないことであり、パフォーマンスを殺しています。メッセージが処理されているのがわかります。 コードのどこで、ウィンドウメッセージを生成しているのかをどのように見つけることができますか?

注:これは、パフォーマンス監視ツールをアプリケーションに接続している場合に発生する傾向があります。したがって、それを実行するのはサードパーティのツールである可能性があります。
ただし、これはこの1つの特定の操作モードでのみ発生するため、ある種の奇妙な相互作用である可能性があります。

4

2 に答える 2

1

onSize がマップされたすべてのウィンドウを指定するメッセージ マップが表示されます。

「洗練されていない」代替手段として、PreTranslateMessage で WM_ONSIZE をトラップし、PreTranslateMessage で渡される pMsg 構造体の hwnd メンバーを使用して Windows ハンドルを表示することができます。

于 2011-02-06T21:06:16.220 に答える
0

メッセージの送信者を知ることはどのように役立ちますか? そのようなメッセージのなだれが検出されたときにメッセージの処理を遅らせるなどの解決策に焦点を当てたいと思います (この処理がパフォーマンス ヒットの原因であると仮定します)。

たとえば、x ミリ秒以内にあまりにも多くのメッセージを受信した場合、タイマーを開始し、タイマーが経過したときに最後に受信したメッセージのみを処理することを決定できます。このようにして、各メッセージではなく x ミリ秒ごとに最大 1 つのメッセージを処理します。

于 2011-02-06T22:21:02.143 に答える