C++ Builderでアイコンをリソースに登録する場合の備忘

Windowsプログラムでアプリケーションのアイコンの他に、関連付けファイルのためのアイコンなどを登録したい場合がある。
ただし、何も考えないで登録すると、アプリのアイコンがリソースで登録したアイコンになってしまう。

C++ Builder(Delphiもそうだろう)は、リソースを、リソース識別子の文字コード順(まあアルファベット順と思っていいだろう)に並べ替えてアプリケーションにマージする。
アプリケーションのアイコンは、オプションのアプリケーションアイコンの設定で行う。それ以外のアイコン等のリソースは、プロジェクトのリソースと画像で登録する。
リソースにアイコンを登録する場合は、事前にアイコンを作成して、前述のリソースと画像のダイアログで設定する。このとき一意のIDとしてリソース識別子を設定するが、自動で設定される場合はIcon_1から順に割り付けられる。

オプションで設定するアプリケーションのアイコンはリソース識別子としてMAINICONが割り付けられる。このため、Icon_1などより後になる。
例として、リソースにアイコンを一つ追加すると、アイコンリソースの0番はリソースで追加されたアイコン(デフォルトのIcon_1のリソース識別子)で、1番はアプリケーションアイコン(MAINICON)となる。

そして、アプリケーションのアイコンとして表示されるアイコンリソースは、通常0番であるため、意図した結果と異なって困るわけだ。

これを避けるには、MAINICONより後ろになるリソース識別子を設定する。簡単にはIcon_1となっているものをNIcon_1などとすれば良い。