開発じたばた日誌
前へ●●●
次へ
じたばた日誌目次へ戻る
TSUCHY Softへ戻る
ちょっと見る アイコン抽出編
ちょっと見るの目玉はアイコン抽出です。
これはEXE,DLLからアイコンを抽出し、ICOファイルにする機能です。
これはかなりエキサイティングな仕事でした。
私は他のこの手のツールがどういうやり方をしているか全く知らないので、自分なりの方法を考えなくてはいけません。
まずアイコンファイルのフォーマットから理解しないとだめです。都合のいいAPIなんてないはずです。
幸いファイルフォーマットの資料は簡単に得られました。
アイコンはビットマップと違って透明という機能かあります。
そのためにファイルの中にはマスクビットなるものがあります。これがちょっとややこしいですね。
さて今の私にできることと言えば、アイコンを表示することだけです。
どうやってアイコンファイルをつくればいいのでしょう?
一言で言えば表示しているものから、ファイルフォーマットに従ってファイルを作ればいいのです。
ヘッダの部分は割と固定値が多いので簡単です。
アイコンにはパレットというものがあって、当時私は理解していませんでした。
でもなぜかそれなりのものを作れたのです。フシギー。
私のやり方は結構原始的です。いったん裏でアイコンを表示しておいて32x32ドットの色を1ドットずつ読んでいきます。
その色をアイコンファイルとして格納すればいいのです。
ここで困ったことがありました。ファイルに納めるデータの構造体にはBYTE型が使われていたのです。
VBにはBYTE型がありません(今のVBはどうだか知りません)。
しかたがないので16ビットデータの上位と下位にうまく書き込んでBYTE型の構造体のふりをさせました。
あとからわかったことなのですが、VBでBYTE型のデータを宣言するときは
STRING *1 (たしかこんな感じ)
で宣言すればいいのです。
しかし最も基本的なデータ型をこんなトリッキーな方法でしか宣言できないなんて情けないなぁ。
こんなことは小さい問題でした。透明はどうするのでしょう?
私の方法では、元々の背景色を白にしてしまえば、本当は透明なところが白として認識されてしまいます。
ぐわぁぁぁ、ここまできて挫折か?