HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0817
微妙に初心者っぽいウィンドウを完全に閉じたい6解決


微妙に初心者っぽい

リンク

2007/8/17(Fri) 04:00:41|NO.10449

‘ウィンドウID’で指定したウィンドウを、
「gsel」等で一時的に非表示にするのではなく、
完全に閉じて(完全に消去して)しまうことは可能でしょうか?



この記事に返信する


f

リンク

2007/8/17(Fri) 07:20:05|NO.10451

可能だけど微妙に初心者っぽいさんには不可能ですのでgsel id, -1で消しましょう。



begriff -いくす-

リンク

2007/8/17(Fri) 09:20:37|NO.10452

お節介かも知れませんが一応
#module
#uselib "user32.dll"
#func DestroyWindow "DestroyWindow" int
#deffunc DestroWin int ref
sel=ginfo_sel
gsel ref
DestroyWindow hwnd
if sel!ref:gsel sel
return
#global

screen 3
mes "三秒後消えます。"
gsel 3,2
gsel 0,1
wait 300

destrowin 3 ;消したいウィンドウID

で、できます
こんなのもあるんだなーって思ってください



微妙に初心者っぽい

リンク

2007/8/17(Fri) 16:37:20|NO.10457

「begriff -いくす-」さん、ありがとうございます。
無事に解決しました。



kz3

リンク

2007/8/17(Fri) 17:17:22|NO.10458

回答者こそスクリプトはpre /preで囲ったほうがいいと思います。
でないと質問者に示しがつきません。

それから、いくすさんがHSPの裏側の動作を理解しているなら構わないと思いますが、いくすさんだけが理解していてもその仕組みを利用者に伝えなければ危険なコードとそう変わりありません。

いくらHSP3からDLL関数を呼びやすくなったとはいえ、HSPの裏舞台で何が行われているのか理解せずに標準的(公式的)でない動作を「できます」と断言して公開するべきではないと思います。
そういうのは「できます」ではなく、たまたま「できちゃった」であって、予期せぬ不具合が起きる可能性も知らせなくてはならないかと思います。

そのコードに潜む「予期せぬ不具合」をいくすさんは把握しているでしょうか?



begriff -いくす-

リンク

2007/8/18(Sat) 10:05:08|NO.10491

失礼いたしました。
タグのつけ忘れは本当情けないです

少々把握しているつもりです
まず
未定義のウィンドウに対してのgsel はエラーが出ますが
削除したウィンドウに関してはエラーが出ません
実際 探せばいくらでもあるでしょう。

自分的にも実用性にかけるかなと思っていたので


一応

で、できます
こんなのもあるんだなーって思ってください


のところで、遠まわしにお勧めできないと示したつもりでした。
口足らずでした。



kz3

リンク

2007/8/18(Sat) 18:09:40|NO.10500

>未定義のウィンドウに対してのgsel はエラーが出ますが
>削除したウィンドウに関してはエラーが出ません

そういったスクリプトの表面的なことではなく、HSP(や話がでかすぎるけどWindows)の内部的な話です。
通常であれば、一度作成したもので実行中必要としないウィンドウは非表示にするのがセオリーです。
そしてウィンドウは終了時に、必要な後処理も含めてまとめて破棄されます。
ウィンドウを破棄する命令が用意されていないのも「そういうやり方でやってください」って言われてるようなものだと思います。

ところがAPIが自由に使えるからといって、HSPが終了するよりも先にウィンドウを破棄して、そのとき破棄に係わる後処理が行われるのかどうか。(行われない)
終了時のウィンドウ破棄に係わる後処理のときにあるべきウィンドウがなくて正しく後処理が行われるのかどうか。(行われていない可能性がある)

少なくともHSPSDKのソースを見る限り、隅から隅まで関数の戻り値はチェックされていません。(それが普通なのかも)
一見したところでは分からない不具合が息を潜めて待ち構えているかも知れない、ということを伝えたかっただけです。

ちなみに質問が「完全消去」だからいいのかも知れませんが一旦破棄したウィンドウは内部情報を初期化するとかしない限り、実行中に限り再度作成できません。
むしろ問題なのはウィンドウを破棄する必要のあるスクリプトにあるような...。



ONION software Copyright 1997-2023(c) All rights reserved.