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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
1118
smalltainscreen命令で出した別ウィンドウが閉じられたときにすべて閉じられてしまう。4未解決


smalltain

リンク

2011/11/18(Fri) 11:11:11|NO.43087

別のウィンドウを閉じない方法を教えてください。



この記事に返信する


ken2

リンク

2011/11/18(Fri) 11:47:43|NO.43088

こういうこと?



screen 0 mes "screen 0" screen 1 mes "screen 1" onexit gosub *exit stop *exit if wparam !=0 :return end



あり

リンク

2011/11/18(Fri) 12:00:29|NO.43090

onexitを使うとwparamにクローズボタンが押されたウィンドウIDが返るので
gselで非表示にさせるという方法があります。
詳しくはonexitのヘルプを読んで下さい。

title "window 0" button gosub "全て表示", *hyouji ; 消えたウィンドウを表示する button "終了", *owari ; プログラム終了用ボタン screen 1 : title "window 1" screen 2 : title "window 2" onexit gosub *exit stop *exit cwin = wparam ; wparamにクローズボタンが押されたウィンドウIDが入る if cwin ! 0 { dialog "window " + cwin + "を非表示にします" gsel cwin, -1 ; ID0以外のウィンドウなら非表示にする } return *hyouji ; ウィンドウの再表示 gsel 1, 1 gsel 2, 1 return *owari end ; endでないと終了できません



notroN

リンク

2012/1/1(Sun) 19:03:41|NO.43994

閉じようとしたウィンドウを非表示にして、
全て閉じられたら終了します。

A=0 /*閉じられたウィンドウをカウント*/ screen 0 :title ""+ginfo(2) screen 1 :title ""+ginfo(2) screen 2 :title ""+ginfo(2) screen 3 :title ""+ginfo(2) onexit gosub *Exit /*いずれかのウィンドウを閉じようとしたら*Exitに飛ぶ*/ stop *Exit if ginfo(2)=0 { /*閉じられたウィンドウのIDが0だったとき*/ gsel ginfo(2),-1 :A=A+1 /*ウィンドウIDの0を非表示にしてAに1をカウント*/ if A=4 :end /*Aが4(全てのウィンドウが閉じられたときは終了*/ return } if ginfo(2)=1 { /*閉じられたウィンドウのIDが1だったとき*/ gsel ginfo(2),-1 :A=A+1 /*ウィンドウIDの1を非表示にしてAに1をカウント*/ if A=4 :end /*Aが4(全てのウィンドウが閉じられたときは終了*/ return } if ginfo(2)=2 { /*閉じられたウィンドウのIDが2だったとき*/ gsel ginfo(2),-1 :A=A+1 /*ウィンドウIDの2を非表示にしてAに1をカウント*/ if A=4 :end /*Aが4(全てのウィンドウが閉じられたときは終了*/ return } if ginfo(2)=3 { /*閉じられたウィンドウのIDが3だったとき*/ gsel ginfo(2),-1 :A=A+1 /*ウィンドウIDの3非表示にしてAに1をカウント*/ if A=4 :end /*Aが4(全てのウィンドウが閉じられたときは終了*/ return }
全て非表示のままでいいのなら

/*ウィンドウを残したままにするのはあまり良くないけど...*/ screen 0 :screen 1 :screen 2 :screen 3 onexit gosub *Exit stop *Exit if ginfo(2)=0 :gsel ginfo(2),-1 :return if ginfo(2)=1 :gsel ginfo(2),-1 :return if ginfo(2)=2 :gsel ginfo(2),-1 :return if ginfo(2)=3 :gsel ginfo(2),-1 :return
でいいと思います。



skyblue

リンク

2012/1/2(Mon) 09:54:05|NO.43999

notroNさんのスクリプトを以下のようにしたほうがスクリプトが短くて見やすいです。

A=0 /*閉じられたウィンドウをカウント*/ screen 0 :title ""+ginfo(2) screen 1 :title ""+ginfo(2) screen 2 :title ""+ginfo(2) screen 3 :title ""+ginfo(2) onexit gosub *Exit /*いずれかのウィンドウを閉じようとしたら*Exitに飛ぶ*/ stop *Exit if ginfo(2)>-1 { /*閉じられたウィンドウのIDが0だったとき*/ gsel ginfo(2),-1 :A=A+1 /*ウィンドウIDの0を非表示にしてAに1をカウント*/ } if A=4 :end /*Aが4(全てのウィンドウが閉じられたときは終了*/ return



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