◇PocketPC2002開発 〜アイコン画像表示〜

アイコンを画像として使うと、透過色処理が楽チンです。
実際にできるかどうか検証してみました。

○アイコンリソースの生成

アイコンを作成しようとするとツールが制限されて面倒ですので、普通に 256色 BMPを用意しました。
透過部分をグリーン(R=0,G=255,B=0)にして保存しました。
もちろんアイコンを作成してインポートすれば、こんな複雑な手順は必要としません。

1. eMbedded Visual C++の左をリソース一覧に変更
2. 一番上の、○○ resourcesを右クリックして、importを選択して、作成した 256色 BMP画像ファイルを import
3. もう一度 ○○ resourcesを右クリックして、insertを選択して、Iconをダブルクリック
4. 生成したアイコンリソース(IDI_ICON1)をダブルクリックして、エディタを起動
5. エディット画面のすぐ上に、Device:、その右にサイズと色、そのみぎに New Device Imageボタンがありますので、それをクリック
6. New Icon Imageダイアログの右にある Customボタンをクリック
7. 256色 BMPと同じ、画像サイズと色数を入力して、OKボタンをクリック
 とは言っても、サイズは 32×32しかダメみたいです(:_;) 表示されない時はサイズを疑って下さい。
8. インポートした 256色 BMPリソース(IDB_BITMAP1)をダブルクリックして、エディタを起動
9. メニューの Edit->Copyを選択
10. もう一度、生成したアイコンリソースをダブルクリックしてエディタを起動
11. メニューの Edit->Pasteを選択して貼り付ける
12. 画面のどこかにある Colorsツールバーを探し、透過色にしたい色の上で右クリック
 このエディタでは、Colorsツールバー内にある色しか透過色にできないようです。その為に最初にグリーンを透過色にしておきました。
13. インポートした 256色 BMP画像を削除
14. メニューの File->Saveで完了

○アイコンを表示

BMP画像よりは素直に表示できます。
やはり、WM_PAINT内に書いて下さい。

HICON hICON;
hICON=LoadIcon(g_hInst, MAKEINTRESOURCE(IDI_ICON1));
DrawIcon(hdc, 0, 0, hICON);
DestroyIcon(hICON);

○表示されない場合

アイコン表示が Windowsと同じ方法にもかかわらず、解析に時間がかかりました。
理由は、ちょっと変な所がある為です。
以下にチェック項目を書いておきます。

・プログラムアイコンを表示してみる
ソースが正しいことを証明する方法です。
リソース一覧を見ると、Icon欄に最初から IDI_プロジェクト名のアイコンが登録されています。
これを表示してみて、表示できなければ何か記述が間違っています。

・アイコンファイルが正しい事を調べる
リソース一覧上で、該当のアイコンを右クリックして、Propertiesを選択する。
Icon Propertiesの一番下に File name設定項目があります。
ここにフォルダを含んだパスが入っていたら、フォルダを削除します。
どうやらフォルダ指定はできない様子です。
このファイル名を変更したら、プロパティを閉じて、メニューの File->Save Allを選択して全て保存して下さい。何やらダイアログが表示される事が多いですが、無視して閉じて下さい。

・アイコンサイズが正しい事を調べる
プロジェクトフォルダを見ると、設定したアイコンファイルがあるはずです。
それを eMbedded Visual C++画面上へドラッグドロップしてみます。
画像が正しく表示されれば OKですが、そうでない場合は NGです。
リソース一覧から該当アイコンをダブルクリックして、サイズが 16×16、32×32、48×48のどれかになっているか確認して下さい。

・参照ファイルがおかしくなっていないか?
これはバグだと思うのですが、リソースの出し入れを行うと、参照しているファイルがおかしくなったり、不要なファイルが参照されていたりするようになります。
eMbedded Visual C++画面の左にある、File Viewタブをクリックしてファイル一覧を表示します。
Resource Filesフォルダの一覧を見て、おかしくなっているファイルを一度削除してリソース定義をし直して下さい。


トップメニュープログラマ専用PocketPC2002