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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0407
杉村祐介ginfo(2)の判定。2解決


杉村祐介

リンク

2012/4/7(Sat) 13:31:25|NO.45911

今HSPの画面がアクティブじゃないときに
メインループの処理を中断できないかと試行錯誤してます。


repeat 250
await 20
if ginfo(2)=-1:continue cnt
color:boxf
color 255,255,255:pos 0,0:mes cnt
loop
dialog
end

上記プログラムを実行してから
ウィンドウをHSP以外のものに変えた場合は
カウンタの値が止まるのですが、
最小化しても止まりません。

カウンタの値は

・開いているまま、別のウィンドウをアクティブにすると止まる
・最小化しても動く
・最小化してから別のウィンドウをアクティブにしても、動いたまま



最小化しているときにカウンタが止まるように
プログラムは組めないでしょうか?



この記事に返信する


hexa.hemi

リンク

2012/4/7(Sat) 14:04:28|NO.45916

組めます。しかし、そういうことをするとなるとoncmdでメッセージを受け付けたり
APIを使用する必要があります。
今回は、標準でついているoncmdを使ったサンプルを書きました。
コメントが付いている行が追加した部分です。

oncmd gosub *syscmd, $112// 最小化・最大化・元に戻された時などに*syscmdに飛ぶようにする minf = 0// この変数は"最小化されているフラグ"です(最小化されていれば1、そうでなければ0になります) repeat 250 await 20 if ginfo(2)=-1:continue cnt if minf = 1 : continue cnt// "最小化されているフラグ"が立っているときに、カウントさせない color:boxf color 255,255,255:pos 0,0:mes cnt loop dialog end *syscmd// 最小化・最大化・元に戻された時などに飛ぶ場所 if wparam = $F060 : minf = 1// 最小化された("最小化されているフラグ"を立てる) if wparam = $F120 | wparam == $F030 : minf = 0// もとに戻されたか、最大化された("最小化されているフラグ"を降ろす) return// 前の処理に戻す
あと、スクリプトは小文字の<pre>〜</pre>で囲むと見やすくなりますよ(<は<に、>は>に変えてください)。



杉村祐介

リンク

2012/4/7(Sat) 15:38:00|NO.45925

oncmdでできるのですね、
解答ありがとうございます。

preでのスクリプト記述は忘れてました
すみません、今後気をつけます。



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