カテゴリー別

お絵描き、デザイン

写真、動画関連ソフト

アメーバピグ専用ソフト

ホームページ関連

画像処理

スキャナー用

SEO 関連

お楽しみ

その他

過去ログ

2018年07月17日(火)

Windows API、アイコンリソースに含まれる全てのアイコンのサイズを列挙する方法

写真閲覧ソフトのミルノ PC フォトフレーム の修正中。
現在、メニューを「表示スケール」に対応させる作業中です。

写真をミルノに!

で覚えてね。キラーン。

アイコンリソース (ICON) には、
複数のサイズの画像を含めることができます。

となれば、アイコンリソースに含まれている
全ての画像のサイズを列挙したくなるのが人情ってものですw。

アイコンリソースの画像のサイズを全て列挙する

まんまの Windows API は無いみたいなので、
アイコンリソースをロックして
メモリーを参照する必要があります。

FindResource して、
LoadResource して、
LockResource すると、
メモリーの内容が見れます。

解放する必要もないので、そんなに難しくはないです。

FindResource の lpType には、
RT_GROUP_ICON を指定します。

で、 The format of icon resources - The Old New Thing
にある GRPICONDIR* にキャストすれば OK です。

GRPICONDIRENTRY は、Icons にある
ICONDIRENTRY とは微妙に違うので注意です。

最後の、DWORD dwImageOffset が
WORD nId になってるので、
2 バイト少ないです。

ちなみに、構造体にパディングが入るとダメなので、
構造体の宣言の前で、
#pragma pack(1)
し、終わったら、
#pragma pack()
で、ディフォルトの値に戻してあげましょう。

ま、後は大丈夫と思いますが、アイコンの数は、
ポインターが GRPICONDIR* info だとすると、
info->idCount で取得できます。

各アイコンのサイズは、
info->idEntries[i].bWidth
info->idEntries[i].bHeight
ですね。

・・・

日本語の最新版はこちらのページから、ダウンロードできます
You can download the latest version of Miruno PC Photoframe here.

x64 の最新版はこちらのページから、ダウンロードできます
Download the latest version of Miruno PC Photoframe x64 here.

・・・

月額会員専用のx64 版 もあります。
月額会員には、こちらのページから参加できます

・・・

パネルを固定するピンボタンは、拡縮でぼやけさせたくないので、
アイコンリソースに含まれる画像サイズを列挙したいなー
と思ったら、結構大変でした。

アイコンに含まれる画像サイズは
既に知ってるわけだから、どこかに
配列で書いちゃえば楽ですね。

でも、そうすると、アイコンに含まれる
画像サイズのバリエーションを変更したときには、
配列も忘れずに書き替える必要がでてきます。

とはいえ、画像サイズのバリエーションを
一生変更しなかった場合、コーディングに無駄な時間
がかかるため、どちらがいいかは、わかりませんな。

ミルノ PC フォトフレーム
ミルノ PC フォトフレームのダウンロード
ミルノ PC フォトフレームの更新履歴
ご意見・ご要望連絡窓口


コメント
コメントする