質問

私のプログラムは、複数のスレッドがあります。私は、ユーザーに情報を表示するメッセージボックスを使用しています。とにかくそこにある(またはメッセージボックスの代わりに)メッセージボックスがユーザーによって見える画面に残っているとしながら、私は別のスレッドの更新を持つことができます/メッセージボックスの表示テキストを変更できますか?

役に立ちましたか?

解決

GetCurrentThreadId()とは、SetWindowsHookEx()を経由して、スレッド固有のフックを使用して、あなたはすべてにアクセスメッセージボックスは、()を獲得し、ダイアログのメインウィンドウハンドルへのゲインのアクセスだけでなく、内部的に受信したメッセージをフックすることができますダイアログの子コントロール。その後、必要に応じて、ダイアログとそのコントロールをカスタマイズすることができます。この技術は、一般的になど、ボタンのテキストをカスタマイズします。

、(MessageBoxTimeout()が導入される前に)自動閉鎖ダイアログを実装するために使用されています

他のヒント

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

私はあなたが他のスレッドからのメッセージ/更新情報に耳を傾け、独自のウィンドウを作成することをお勧め。そのように、あなたがコントロールしている。

私はこれを行うための直接的な方法があります信じていない、あなたはおそらく、ウィンドウハンドルを取得しようとすることができますが、これはあまりにも厄介です。あなたの最善の策は、あなたがそれを完全にコントロールを持っているように、独自のダイアログボックスを作成することです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top