33990


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つ目のメッセージボックスが表示されました。これは、各メッセージに対して、スレッドが立っているということなのでしょうか。

提示できるコードがなく大変恐縮なのですが、  
ご回答いただけると幸いです。  
よろしくお願い致します。


CC BY-SA 3.0
2017-04-13T15:37:38.523
33989
2017-05-14T13:55:14.460
2017-05-14T13:55:14.460
19213
19213
question
c# winapi
C# WndProcについて


> 1.プロセスAのメッセージを受信後、すぐにプロセスBからメッセージが来たとします。 プロセスAのメッセージに対しての処理はまだ終わっていません。
> この場合、プロセスBのメッセージはどうなるのでしょうか？

メッセージキューに入っています。

>
> 2.一度、プロセスCでメッセージを受信をしたら、MessageBox.Showを出すプログラムを作成し試しました。プロセスAのメッセージを受信後、メッセージボックスが表示され、OKボタンを押さずにそのままにしておきます。プロセスBのメッセージ受信後、2つ目のメッセージボックスが表示されました。これは、各メッセージに対して、スレッドが立っているということなのでしょうか。

違います。  
プロセスCは1つ目のメッセージボックスを表示したあとすぐにモーダルループといわれるメッセージループに入ります。そこでプロセスBからのメッセージを受けるとウィンドウプロシージャにディスパッチされ、2つ目のメッセージボックスが表示されることになります。  
これらは１つのスレッドの中で行われます。


CC BY-SA 3.0
2017-04-13T17:57:34.030
33990
2017-04-13T17:57:34.030
4765
33989
answer