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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0808
FunnyMakerscreen の直後に割り込みの隙が,,,5解決


FunnyMaker

リンク

2012/8/8(Wed) 17:31:51|NO.48303

気になることがあるので質問します。
周知の事実でしたらすみません。

「HSP3プログラミングマニュアル」の「割り込み」のところを読む限り、
キーやマウス入力による割り込みはwaitやawait命令で停止している時のみ受け付ける
とあるのですが、
どうやら screen 命令の直後に割り込みの隙があるようなのです。

下のような実験用のスクリプトを組んでみました。


*start screen 0,200,100 : color 0,0,0 button gosub "A",*B screen 1,200,100 : color 0,0,0 repeat screen 1,200,100 color 0,0,0 mes "w" await 1 loop *B gsel 0,0 return

ウィンドウが2つ作られます。「A」と書かれたボタンを連打してみてください。そのボタンの
あるウィンドウに「w」が描画されることがあると思います。

もし waitやawait命令で停止している時のみ割り込めるのであれば、ID0のウィンドウの
「A」ボタンをクリックしてもID0のウィンドウには「w」が現れないはずだと思うのですが、
実際に実行してみると私の環境では「w」が現れてしまいます。
私の使っているHSPのバージョンは 3.3 と 3.31RC1 で、どちらでも同じ結果でした。
OSはWindows XP と Windows7 で、どちらでやっても同じ結果でした。

screen 命令の直後には割り込みの隙があるということなのでしょうか?
何かご存知の方がいらっしゃいましたら、教えてください。



この記事に返信する


KA

リンク

2012/8/8(Wed) 19:47:33|NO.48309

試したけど現れない。



FunnyMaker

リンク

2012/8/8(Wed) 20:16:15|NO.48314

ありがとうございます。

現れませんでしたか...。(...となると、私の方に何か問題があるのか...?)

確かに、現れない方が望ましい結果なのですけどね。
もし隙があるということになったら、今後場合によっては screen の後に gsel を入れる必要が
でてきてしまいますから。



暇人

リンク

2012/8/8(Wed) 21:42:17|NO.48327

自分の所では現象は起こった
buttonに限らず他のメッセージ系割り込みも同様に起こると思う

憶測だがscreen命令後にOS側にタスクを一度移さないと
ウィンドウが表示されない感じだから仕様だと思う

button配置は自動でタスクをOSに渡さないから
wait系かstopやscreen命令があるまで表示されない

button gosub "A",*B t=gettime(6) repeat if ((60+gettime(6)-t)\60)>2{break}//2秒ぐらいフル回転 loop screen 1,200,100,0,300,300 t=gettime(6) repeat if ((60+gettime(6)-t)\60)>2{break} loop stop *B end



FunnyMaker

リンク

2012/8/8(Wed) 22:15:15|NO.48330

ありがとうございます。

やはり screen の直後には割り込みの隙があったのですね。
あなたのスクリプトを実行したところ、確かに button では配置後に待ちを入れてOSにタスク
を渡すまではボタンが表示されませんでした。

GUI部品が関係する割り込みには、以降注意しようと思います。


また一つ勉強になりました。これにて解決とさせていただきます。

アドバイスを下さった KA さん、 暇人 さん、ありがとうございました。



FunnyMaker

リンク

2012/8/8(Wed) 22:16:03|NO.48331

解決 にチェック入れるのを忘れてました。



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