モードレスウインドウの終了を待つ

何がしたいのかというと、
・gpg.exeを起動する
・ダイアログ(エディットコントロール、無効状態の「閉じる」ボタンあり)を表示する
・gpg.exeから出力されるメッセージをダイアログのエディットボックスに随時表示する
・gpg.exeが終了したらダイアログの「閉じる」ボタンを有効化する
・「閉じる」ボタンでダイアログを閉じる
という一連の機能を実現したいのである。

これをモーダルダイアログで実現するならば、まずダイアログを作成し、ダイアログのスレッドからgpg.exeを起動することになる。

しかし、今回のJanusHSではこのような事態を想定していなかったため、あらかじめモードレスのダイアログを作成するようになっていた。
メインプロセスが一つあり、そこからgpg.exeを起動したり、モードレスダイアログにメッセージを送っていたりしたのだ。
そうすると、gpg.exeの終了を検出しやすい反面、モードレスダイアログの「閉じる」ボタンをどう処理するかの問題が出てくる。

とりあえず今回は、
・モードレスダイアログ作成と同時に親ウインドウを無効化
・gpg.exe起動
・メッセージをモードレスダイアログに送信
・gpg.exe終了待ち
・「閉じる」を有効化
・メッセージループを作り、「閉じる」が押されてウインドウが消滅するのを待つ
・「閉じる」が押されたら親ウインドウを有効化して、ダイアログをDestroy
というやり方で実現してみた。
スマートとは思えないが、芸は多いに越したことは無い。

これで、若干プロセスの同期処理に問題はあるものの、とりあえず動いた。
新版JanusHS、ゆっくりと完成に近づいている。

"モードレスウインドウの終了を待つ" へのコメントを書く

お名前
メールアドレス
ホームページアドレス
コメント