2012-03-31 7 views
1

モーダルダイアログボックスが存在する場合、PostMessageを使用してメインウィンドウに送信されたメッセージは、そのウィンドウのメッセージループを通過しません。実際には、モーダルダイアログが表示されている間、メインウィンドウのメッセージループを通過するメッセージはありません。おそらく、ダイアログ処理のいくつかのメッセージループを通してメインウィンドウのWndProcにそれを行います。Windowsメッセージループ奇妙

これは正常なのですか、奇妙なことをしていますか?

答えて

2

これは正常です。ダイアログボックスは、メッセージループをポンピングすることによってモーダルになります。これは問題ではないはずですが、DispatchMessageは依然としてメッセージをウィンドウプロシージャに配信します。有効なウィンドウハンドルで投稿するようにしてください。そうでなければ、PostThreadMessage()が、スレッドがウィンドウを作成した場合に保証された失敗鯨です。 MessageBox()と似ています。

+0

ダイアログがモーダルではなくモードレスであればどうなりますか? –

+0

何も特別なものはありません。他のメッセージループはありません。これは、モードレスダイアログをサポートするためにIsDialogMessage()を呼び出さなければならない理由です。 –