3

ユーザーの操作のためにMessageBoxを表示する可能性のあるマルチスレッドアプリケーションがあります。メッセージボックス自体は、ユーザーがアプリのシステムトレイアイコンからコンテキストメニューコマンドを選択した後、ワーカースレッドから表示されるため、ユーザーはメッセージボックスが表示されている間も技術的にアプリを使い続けることができます。これは、ユーザーが「終了」コマンドを発行するまではうまく機能します。その時点で、開いているメッセージボックスを閉じる方法を見つける必要があります。

宿題をして、メッセージボックスのメイン(ダイアログ)ウィンドウのHWNDハンドルを取得できました(この方法を使用)。Spy++を使用してHWNDが正しいことを確認したので、HWND自体は問題ではありません。PostMessage(hMsgBoxWnd, WM_CLOSE, 0, 0);別のスレッドからメッセージボックスに移動すると、このメッセージが無視されて閉じられません。

ウィンドウハンドルでメッセージボックスを閉じる方法はありますか?

4

2 に答える 2

1

MessageBox()WM_CLOSEすべての場所で処理されるわけではありません。

メッセージ ボックス ウィンドウへの SendMessage/PostMessage WM_CLOSE が常に機能するとは限らない

于 2012-12-14T22:24:54.637 に答える
0

PostThreadMessage を使用して、スレッド固有のメッセージ キューに投稿する必要があります。

于 2012-12-14T04:37:55.617 に答える