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


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0307
チクタクXPでのスクリーンセーバープレビュー6解決


チクタク

リンク

2007/3/7(Wed) 16:37:01|NO.6112

スクリーンセーバーのプレビューについて質問があります。
*********************************************************
buffer 2,768,256
picload "pre.bmp",1
bgscr 0,153,113
Coun=0

*preloopnodx
redraw 0
color 0,0,0 : boxf 0,0,ginfo_dispx,ginfo_dispy
pos 0,0 : gcopy 2,128*Coun,0,128,128
await 100
redraw 1

Coun=Coun+1
if Coun>5 : Coun=0
goto *preloopnodx
******************************************************************
このようなスクリプトで、プレビューが呼ばれた場合に簡単なアニメを繰り返すようにしているのですが、
Windows2000でこれを行った場合にはスクリーンセーバーの設定を開いたときや画面のプロパティを閉じたときに
OSが勝手に(?)終了させてくれるのですが、
XPで実行した場合、プレビューが終了されずプレビューが読み出されるタイミングでどんどん多重起動していき、
タスクが大変なことになってしまいます。
画面のプロパティを閉じたり、ほかのスクリーンセーバーに切り替えてプレビューが変わったときなどのタイミングで
終了させるよい方法はないでしょうか?



この記事に返信する


kz3

リンク

2007/3/7(Wed) 17:04:57|NO.6115

HSPWiKiに「HSPTVの掲示板でスクリプトを貼る際の注意」(http://quasiquote.org/hspwiki/%bc%c1%cc%e4%a4%ce%bb%c5%ca%fd)を追加しました。
ぜひ一度、読んでみてください。



kz3

リンク

2007/3/7(Wed) 18:31:58|NO.6118

>XPで実行した場合、プレビューが終了されずプレビューが読み出されるタイミングでどんどん多重起動していき、

画面のプロパティでスクリンセーバーの[プレビュー]ボタンを押したときのことですね。
タスクに残る現象は確認できましたが、スクリプトをセオリー通り書き直したらタスクを汚すことはありませんでした。

まず、掲載されたスクリプトはセオリーから少し外れている箇所がありますから、以下の点を見直してみてください。

・実際のフルスクリーンでは、サンプル通りID2のウィンドウを画面いっぱいに作成する(ID0でも問題ないけど)=>ID0を小さく初期化したことが原因ではなかろうか?
・ミニプレビュー画面のウィンドウを初期化しない(プレビュー処理について)
・arusave.hspで使われているウィンドウIDをそのままの用途で用い、描画処理だけ入れ替えてみるといいと思います。

憶測ですが、プレビュー時に画面のプロパティ画面が見えているとダメなような。ただし設定画面は良さそうな。
まぁ分からないうちは変にサンプルを改造しない方がいいと思います。



チクタク

リンク

2007/3/7(Wed) 18:59:44|NO.6119

>画面のプロパティでスクリンセーバーの[プレビュー]ボタンを押したときのことですね。
いえ、そこでは問題がないのです。 
(あのプレビューはスクリーンセーバーを起動しているだけなので)

プロパティ画面に表示される小さい画面のことです。

プレビューボタンを押す押さないにかかわりなく小さいプレビュー画面が表示され、そのままプロパティを終了、
その後で再びプロパティを立ち上げると再びミニスクリーンが表示されタスクが増えていきます。

おそらくend処理がされないで、ミニスクリーンが呼ばれたままタスクが残っているということはわかるのですが、
スクリーンセーバー本体や設定部分と違い、ミニスクリーンのプレビューが読み出された後の終了方法がわかりません。

現在はとりあえずXPではミニスクリーンを表示しないようにして仮対処しています



kz3

リンク

2007/3/7(Wed) 19:15:29|NO.6122

>プロパティ画面に表示される小さい画面のことです。

失礼しました。
No6118で言った
>・ミニプレビュー画面のウィンドウを初期化しない(プレビュー処理について)
を試してみてください。

arusave.hsp に従えば、ミニプレビュー処理(*sspre)では最初から画面サイズが合わされているので、bgscrを行う必要はありません。(行ってはいけないのかも)
コメントにも以下のように書かれています。
>プレビューモードでは、HSPのメイン画面(ウインドゥID0)が、プレビュー画面に合わせて小さくなっていますので、
>まずginfo_winx,ginfo_winyのシステム変数で画面のサイズを取得してからその中に描画するようにしてください。

ちなみに私は WindowsXP SP2 + hsp31b7 を使っています。



チクタク

リンク

2007/3/8(Thu) 23:00:17|NO.6154

>kz3さん

どうもbgscr命令を使ったか、サイズを変更していたのが原因だったようです
サンプルのarusave.hspの存在を知らなかったので助かりました



kz3

リンク

2007/3/9(Fri) 00:49:24|NO.6155

>サンプルのarusave.hspの存在を知らなかったので助かりました
サンプルビューワーはなぜかスクリーンセーバーサンプルのディレクトリを読み込まないのでプログラムガイドを読むか直接エクスプローラー等で覗かないと見る機会がないですからね。

# まぁサンプルビューワーはHSPの基本的な命令だけで作れるので、入門卒業試験的なかんじで作ってみるのも...。



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