Windows は、SendMessage が返すべきことをどの程度正確に判断するのでしょうか?つまり、受信スレッドが送信メッセージの処理を終了したことをどのように判断するのでしょうか?
詳細なシナリオ: スレッド A が SendMessage を使用してスレッドをスレッド B に送信しています。明らかに、スレッド B がメッセージの処理を完了するまで、SendMessage は戻りません。スレッド B がダイアログ ボックスをポップアップ表示し、メッセージの送信を開始します。私のシナリオでは、スレッド B によってポンプされるキューに WM_KILLFOCUS メッセージがあります。この結果、スレッド B で WM_COMMAND メッセージが生成されます。スレッド B は、この WM_COMMAND メッセージをデフォルトのウィンドウ プロシージャに渡します。これを行うと、元のメッセージの処理がまだ終わっていなくても、SendMessage はスレッド A に戻ります。何が起こっている?どういうわけか、デフォルトのウィンドウ プロシージャがウィンドウを混乱させて、元の送信メッセージが終了したと考えさせているようです。
メッセージをポンピングしてデフォルトのウィンドウ プロシージャを呼び出すと、SendMessage がだまされて返される既知のシナリオはありますか?
ありがとう!フィル