3

スレッドが終了したらモーダルダイアログを閉じたい。PostMessageまたはの使い方は知っていますが、メンバー関数SendMessageを直接呼び出せないのはなぜですか?EndDialogそうすると、アプリの例外が発生します。

4

1 に答える 1

8

EndDialogは、モーダルダイアログボックス、特にダイアログボックスプロシージャを作成したスレッドから呼び出す必要があります。別のスレッドから呼び出したいようです。別のスレッドからダイアログを閉じるには、スレッド間でサポートされているメッセージを投稿する必要があります。その後、ダイアログはメッセージに応答してそれ自体を閉じることができます。呼び出し元のスレッドは、スレッドを破棄する前にダイアログボックスが閉じるのを待つ必要があります。

これがなぜなのか疑問に思われる場合は、ほとんどのUSERAPI関数にスレッドアフィニティがあります。これらは元々この方法で実装されており、スレッド間での使用をサポートするようには設計されていません。

于 2013-01-29T16:21:49.737 に答える