「なでしこv1」開発掲示板

なでしこv1のバグや要望を書き込む掲示板

(#2389) うまくゆかない根本の原因はWindowの仕様 - うぇいく (2015-01-14 22:38) /中 ---
一応、補足。

フォーム(Window)の作成中と閉じている途中というのは、特殊な状態となっており、それを確定させるまで、自身については他のこと(イベント/メッセージ処理)をできません。作成中ならば、作成を完了させるまで(なでしこではこの部分は内部で処理しています)、閉じている途中ならば、キャンセルしてイベントを終わらせるか、キャンセルせずにイベントを終わらせる(=閉じる動作を継続する)までが、該当します。

待つ命令が、自身のフォームの移動やリサイズを受け付けられるを見て分かる通り、他のことするための命令になっていて、上記の仕様と相いれません。
(他のことを受け付けない、WIN32APIのSleepならば可能です。また、モーダルダイアログを開いた場合は、自身のことを出来ないので、これも大丈夫です。)

どうしても、閉じる途中でなにか長い処理を挟み込みたい場合には、1度、閉じるをのキャンセルして、別途長い処理をしたうえで、その後に、まだ必要ならば、閉じることでうまく見せかける形になると思います。

もともとのWindowsの仕様上の制限の話なので、ちゃんと動くようにする方法は私には思いつきません(仕様通り、動かないようにするのならできますが)
実装上、よい方法があればコメント等でよろしくお願いします。

サンプルと異なる、実際にやりたいことがある場合、それを仕様の範囲内でうまく実装してみてください(それも、プログラミングの面白さの1つですし、万能ではないからこそ、うまく実装できたプログラムと人が評価されます。)
「母艦の閉じた時は」の中では、「秒待つ.. / じん (2014-03-17 11:05) (#2291)/ 緊急 未処理
  とりあえずの対処方法 / こころちゃん (2014-12-14 13:23) (#2374)/ 中 未処理
  なるほど! / じん (2015-01-10 10:34) (#2388)/ 中 未処理
  うまくゆかない根本の原因はWindowの仕様 / うぇいく (2015-01-14 22:38) (#2389)/ 中 ---

(#2389)へ返信する:

👆お手数ですが、いたずら防止のために、「真夏」の読み方を記入してください。

編集時に使うキーを入力(省略可能)

画像ファイル(最大300KB)を添付可能