1

私のプログラムには複数のスレッドがあります。メッセージボックスを使用してユーザーに情報を表示しています。メッセージボックスがまだ画面上にあり、ユーザーに表示されている間に、別のスレッドにメッセージボックスの表示テキストを更新/変更させることができるとにかく(またはメッセージボックスの代わりに)ありますか?

4

3 に答える 3

5

標準の Win32 メッセージ ボックスを使用している場合、ボックスが表示された後にテキストを変更する方法はないと思います (モーダル メッセージ ポンプを入力します)。

他のスレッドからのメッセージ/更新をリッスンする独自のウィンドウを作成することをお勧めします。そうすれば、あなたはコントロールできます。

于 2009-04-22T05:33:42.520 に答える
2

GetCurrentThreadId() および SetWindowsHookEx() を介してスレッド固有のフックを使用すると、MessageBox() が内部で受信するメッセージをフックしたり、ダイアログのメイン ウィンドウ ハンドルにアクセスしたりできます。これにより、ダイアログのすべての子コントロールにアクセスできます。ダイアログ。その後、必要に応じてダイアログとそのコントロールをカスタマイズできます。この手法は、自己終了ダイアログの実装 (MessageBoxTimeout() が導入される前)、ボタンのテキストのカスタマイズなどによく使用されます。

于 2009-06-04T02:07:59.743 に答える
0

これを行う直接的な方法はないと思います。おそらくウィンドウ ハンドルを取得しようとすることもできますが、これは面倒です。最善の策は、独自のダイアログ ボックスを作成して、それを完全に制御できるようにすることです。

于 2009-04-22T12:11:47.507 に答える