2019年07月12日

恥ずかしがり屋のエラーダイアログ

ListView to CSVで、データ保存中に連続でエラーが発生した場合、妙な挙動が起こることが分かりました。

連続でエラーが発生する場合……というか、データ保存が失敗するときは、書き込み失敗なので、だいたい連続で発生するわけですが、ある程度は前面に出てきていたエラーダイアログが、ある時点から急に背後に隠れ始めます。

201907_hazukashi1.jpg
エラーダイアログが連続で何回も発生するので[OK]を押し続けていると、
201907_hazukashi2.jpg
急に後ろに隠れだす。

どうやら、親ウィンドウのWM_DESTROYが子ウィンドウに伝播して、子ウィンドウでWM_DESTROYが発生していることによる発生するようです。
ListView to CSVは少し特殊な作りをしており、各ウィンドウごとに保持するデータは、そのウィンドウが破棄されるタイミングで保存されます。なので、WM_DESTROYが伝播するときは、それぞれのWM_DESTROYごとにデータ保存が実行されます。

これであちこちのウィンドウごとに(しかも破棄されながらの状態で)メッセージボックスを出すと、こんな感じでおかしなことになるらしい。

状況によっては、背後に隠れたことがユーザーから認識できず、終了できなくてユーザーが混乱することになりかねないので、何らかの対応を行おうかと思います。

メッセージダイアログをTOPMOST(最前面)指定にしてしまうとか。


続きを読む
posted by ayacy at 23:23 | Comment(0) | TrackBack(0) | プログラミング