HSP Tips 3

Last Update : 2008/08/xx

HSP (v2.x/v3.x) の全般的なプログラミング情報トピックスいろいろです。(^o^)/

画像ファイル の表示

[1] GIFファイル

 HSP 2.x時代は、GIFファイルの圧縮アルゴリズム技術に関する特許問題の存在で対応できませんでした(参照、Wikipedia - Graphics Interchange Format)。しかし、2004年6月に特許は失効。HSP3では、標準のpicload命令でGIFファイルの読み込みに対応しています。(^O^)v

 ここでは、MCIを用いたGIFファイル(アニメーションGIF可)の単純表示方法を提示しておきます。音楽や動画を扱えるmci命令。(MCIはコマンドがたーくさんあって、よー分からん ^^;

;	MCIによるGIFファイル表示サンプルソース (by Kpan) [HSP2/3]

	onexit *exit

;	JPEGファイルも一応可。
	dialog "gif;*.jpg", 16, "画像ファイル"
	if stat = 0 : stop

;	ウィンドウハンドルを取得
;	(HSP3の場合はこの部分は不要なのでコメントアウトを)
	mref bmscr, 67 : hwnd = bmscr.13

;	GIFファイルの読み込み
mci "open \""+refstr+"\" alias A type mpegvideo style child parent "+hwnd+""

;	表示位置の設定 (ここではX=50、Y=100)
	mci "put A window at 50 100 0 0"

;	GIFファイルの表示 or 再生
;	(「repeat」はアニメーションGIF用で、通常の画像表示なら不要)
	mci "play A repeat"

	stop

*exit
	mci "close A"
	end

 また、Susieプラグインを利用してアニメーションGIFファイルをフレームごとに分解するHSP3サンプルを、自作ソフトのページにて掲載してます。

[2] PNGファイル

 GIFファイルの特許問題に対抗して生まれたPNGファイル(参照、Wikipedia - Portable Network Graphics)。仮に標準対応となると、生成される実行ファイルのサイズがかなり肥大化する影響があるらしく、HSP3の標準命令では対応してません。

 ただ、COMを利用した読み込みは可能なようで、HSP3にモジュールファイル(common\mod_img.as) と サンプルファイル「sample\new\imgload.hsp」(HSP 3.2〜では「sample\comobj\imgload.hsp」)が付いてます。(この場合はPACKFILE機能が使えません)

_-_-_-_-_-_

 GIFファイル(*.gif)、PNGファイル(*.png)、JPEGファイル(*jpeg;*.jpg)などの画像ファイルを扱うことができるHSP拡張プラグイン(DLL/HPI)やモジュールをテキトーにピックアップしてみました。それぞれ、Load(画像ファイルの読み込み)、Save(画像ファイルの出力保存)を意味してます。
 「MEM」はメモリ上の画像データの読み込み、つまりはHSPのPACKFILE(パックファイル)機能を利用することでHSP製実行ファイル内に埋め込んだ画像ファイルを利用できます。HSPの「bload命令 or noteload命令」+拡張プラグインやモジュールで用意されてる「メモリ上の画像データを読み込む命令」の組み合わせで処理させます。

名前 タイプ BMP GIF JPEG ICO PNG MAG MEM
picload 標準命令 [HSP2] L - L - - L O
標準命令 [HSP3] L L L L - - O
bmpsave 標準命令 S - - - - - -
mod_img.as モジュール [HSP3] L L L L L - X
imgctl.hpi 拡張プラグイン [HSP2] L S L S L S - L S L O
imgctl.dll 汎用ライブラリ [HSP3] L S L S L S - L S L O
Artlet2D (要GDI+) モジュール [HSP3] L S L S L S - L S - X
Mem_Picload (要GDI+) モジュール [HSP3] L L L L L - O
HSPCV 拡張プラグイン [HSP3] L S - L S - L S - X
hsppng 拡張プラグイン [HSP2] - - - - L - X
拡張プラグイン [HSP3] - - - - L - O
Hspng 拡張プラグイン - - - - L S - X
AMpng.hpi 拡張プラグイン - - - - L S - O
ZGPMX 拡張プラグイン - - - - L S - X
p2b.dll 拡張プラグイン - - - - L - O
pngload32.dll 拡張プラグイン - - - - L - O
Jpex for HSP 拡張プラグイン - - L S - - - X
*.spi 各種Susieプラグイン - - - - - - O/X
GDI+」は、Windows XP以降の環境から標準でシステムに含まれてます。

↑TOP↑

実行ファイルのアイコンを書き換える

 今までリリースされていたHSP向けアイコン書き換えソフトを利用して、HSP3製実行ファイルのアイコンを書き換えようとすると、「アイコン以外のリソースを含むファイルは書き換えられません」というエラーがでて変更できないという事例がでています。

 これはアイコンを書き換える処理として広く利用されている HSP用拡張プラグイン 「ICONREWR.DLL」 やその拡張ランタイム 「HRT_IRW」 がHSP2時代に製作されたものであり、HSP3製実行ファイルを想定した作りになってないためです。

[1] Resource Hacker を利用したアイコンの書き換え

 書き換え不可な場合は、「Resource Hacker」というフリーソフトの利用をお勧めします。これはアイコンを変更するためだけのプログラムではなく、「リソースエディタ」と呼ばれるプログラムです。日本の方による 日本語表記版(Japanese) も公開されています。

 アイコンを変更するには、[アクション]メニュー の [アイコンを置き換える] から行います。

[2] マルチアイコンの利用

 サイズや色数の異なる複数個のアイコンが1つのアイコンファイル(*.ico)としてパックされている「マルチアイコン」。これの場合、「Resource Hacker」で書き換えても、実行ファイルを起動した際に「Startup failed.」エラーが表示され起動できなくなることがあります。

 これはHSP製実行ファイルのあらかじめ想定しているアイコン用リソースサイズがそれほど大きくなく、実行ファイル自体が壊れてしまう、あるいは内部の改変チェック機能に引っかかってしまうためだと考えられます。

 このような場合は、実行ファイルの作成作業を行う前に、HSP本体に存在する実行ファイルの大元 hsprt ファイル のアイコンを書き換えておく手法で対処可能です。このファイルは適当に hogehoge.hrt というファイル名で保存し、HSP本体に存在する runtime フォルダに入れておきます。そして、スクリプトの最初に下のようなコードを挿入し、エディタの[HSP]→[実行ファイル自動作成] で実行ファイルを生成する形になります。

#packopt runtime "hogehoge.hrt"

 この[2]のhrtファイルのアイコン買い換えに関しては、もう少し詳しく書いた専用ページ「HSP製実行ファイルのアイコン変更」を用意しています。

-^-^-^-^-

※この 「Resource Hacker」 の処理を利用させてもらって、HSP製実行ファイルのアイコンを書き換える拙作ツール 「Let's HSPIC!」 を公開してます。HSP2製、HSP3製の両実行ファイルに対応しており、マルチアイコンなども特に問題なく変更できると思うので、どーぞご利用ください。(^-^)o

↑TOP↑

実行ファイルにバージョン情報

 ファイルのプロパティなどから確認できる「バージョン情報」表示の機能。これは実行ファイル内に埋め込まれているデータです。これをHSP製実行ファイルに付加する1つの方法として、リソースエディタ「Resource Hacker」を利用します。

 他のバージョン情報付き実行ファイルをリソースエディタで読み込み、ツリーの「Version Info」を選択、メニューの[アクション]→[リソースを*.res形式で保存する]を行います。そして、この拝借したファイルを、自分の実行ファイル (hsprt、*.hrt) に[アクション]→[新しいリソースを追加する]で取り込み、あとはそのバージョン情報の内容を自前用に変更する、という感じです。(→ 参照、バージョン情報関連)

※この 「Resource Hacker」 の処理を利用して、HSP製実行ファイルのアイコンを書き換える拙作ツール 「Let's HSPIC!」 には、バージョン情報のデータを追加する機能も実装してます。どーぞご利用ください。(^-^)b

↑TOP↑

<< HSP Tips 2 || HSP Tips 4 >>

Copyright © 2005-2012 . All rights reserved.