質問: WndProcについての質問です。 プロセスA → プロセスC プロセスB → (A,B,Cは別々のアプリです) プロセスCにWndProcのプロシージャを起動させておきます。 プロセスA,BはプロセスCにプロセス間通信にてwinメッセージを送ります。 プロセスCは受け取ったWinメッセージによって、処理を変えます。 1.プロセスAのメッセージを受信後、すぐにプロセスBからメッセージが来たとします。 プロセスAのメッセージに対しての処理はまだ終わっていません。 この場合、プロセスBのメッセージはどうなるのでしょうか? 2.一度、プロセスCでメッセージを受信をしたら、MessageBox.Showを出すプログラムを作成し試しました。プロセスAのメッセージを受信後、メッセージボックスが表示され、OKボタンを押さずにそのままにしておきます。プロセスBのメッセージ受信後、2つ目のメッセージボックスが表示されました。これは、各メッセージに対して、スレッドが立っているということなのでしょうか。 提示できるコードがなく大変恐縮なのですが、 ご回答いただけると幸いです。 よろしくお願い致します。
回答: > > 1.プロセスAのメッセージを受信後、すぐにプロセスBからメッセージが来たとします。 プロセスAのメッセージに対しての処理はまだ終わっていません。 この場合、プロセスBのメッセージはどうなるのでしょうか? > > > メッセージキューに入っています。 > > 2.一度、プロセスCでメッセージを受信をしたら、MessageBox.Showを出すプログラムを作成し試しました。プロセスAのメッセージを受信後、メッセージボックスが表示され、OKボタンを押さずにそのままにしておきます。プロセスBのメッセージ受信後、2つ目のメッセージボックスが表示されました。これは、各メッセージに対して、スレッドが立っているということなのでしょうか。 > > > 違います。 プロセスCは1つ目のメッセージボックスを表示したあとすぐにモーダルループといわれるメッセージループに入ります。そこでプロセスBからのメッセージを受けるとウィンドウプロシージャにディスパッチされ、2つ目のメッセージボックスが表示されることになります。 これらは1つのスレッドの中で行われます。