2023/10/24(火) [n年前の日記]
#2 [hsp] HSPでスクリーンセーバを作る方法を再勉強
HSP 3.6を使ってスクリーンセーバを作る方法について再勉強中。
HSPに同梱されているサンプルの中に、sample\ssaver\arusave.hsp があって、コレがスクリーンセーバのサンプルになっている。
_OHDL - arusave.hsp
コメントもたくさん書いてあるので、とても参考になる。ありがたや。
ただ、以前作った時の体験では、プレビュー処理は要注意で…。
ソース内のコメントでは、「プレビュー内でも実際のスクリーンセーバ処理を書いたほうが良いでしょう」とされているけれど。実際そのように作ったら、プレビュー画面が閉じられたり、設定画面を呼び出すたびに、Windowsのイベントビューアにエラーが残る、動作が怪しいスクリーンセーバになってしまって…。 *1 故に、サンプルと同様、文字か画像を表示した直後、stop する処理にしておいたほうが無難だろうなと。
ちなみに、プレビュー処理の最後を stop ではなく end にしたら、プレビュー画面に何も表示されないスクリーンセーバになってしまった。stop にするとスクリーンセーバの設定ウインドウが閉じられるまでプロセスが残り続けるのだけど、あえてそうしないと期待した動作にならないようだなと…。別の言語でスクリーンセーバを書いた時も、与えられたプレビュー用のウインドウハンドルに対して、一定時間は描画し続けないと反映されなかったりしたので、1回描画してすぐ終了、といった感じでは正しく表示されないのかもしれない。
HSP 3.7βになったら、HSPエディタからスクリーンセーバを生成するためのメニュー項目(ツール → レガシーツール → スクリーンセーバ作成)が無くなるらしい。その場合、ソース内に #packopt type 2 を記述しておくことで、実行ファイル生成時に .scr を生成できるという話を見かけた。
_HSP3.7bata でスクリーンセーバー作成 - HSPTV!掲示板
HSPに同梱されているサンプルの中に、sample\ssaver\arusave.hsp があって、コレがスクリーンセーバのサンプルになっている。
_OHDL - arusave.hsp
コメントもたくさん書いてあるので、とても参考になる。ありがたや。
ただ、以前作った時の体験では、プレビュー処理は要注意で…。
ソース内のコメントでは、「プレビュー内でも実際のスクリーンセーバ処理を書いたほうが良いでしょう」とされているけれど。実際そのように作ったら、プレビュー画面が閉じられたり、設定画面を呼び出すたびに、Windowsのイベントビューアにエラーが残る、動作が怪しいスクリーンセーバになってしまって…。 *1 故に、サンプルと同様、文字か画像を表示した直後、stop する処理にしておいたほうが無難だろうなと。
ちなみに、プレビュー処理の最後を stop ではなく end にしたら、プレビュー画面に何も表示されないスクリーンセーバになってしまった。stop にするとスクリーンセーバの設定ウインドウが閉じられるまでプロセスが残り続けるのだけど、あえてそうしないと期待した動作にならないようだなと…。別の言語でスクリーンセーバを書いた時も、与えられたプレビュー用のウインドウハンドルに対して、一定時間は描画し続けないと反映されなかったりしたので、1回描画してすぐ終了、といった感じでは正しく表示されないのかもしれない。
HSP 3.7βになったら、HSPエディタからスクリーンセーバを生成するためのメニュー項目(ツール → レガシーツール → スクリーンセーバ作成)が無くなるらしい。その場合、ソース内に #packopt type 2 を記述しておくことで、実行ファイル生成時に .scr を生成できるという話を見かけた。
_HSP3.7bata でスクリーンセーバー作成 - HSPTV!掲示板
*1: もしかすると、プレビュー画面の処理内で、ウインドウの初期化処理等をしている可能性がありそう。その手のウインドウ初期化処理をしてしまうと、プロセスが残り続ける・溜まり続けるという不具合報告も見かけたし…。
[ ツッコむ ]
以上です。