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

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

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

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

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

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

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック