アイコン一覧ウィンドウでのグループ | 格納手法 |
Type Icons | BNodeInfo::SetIcon(), BAppFileInco::SetIconForType() |
Icons | type-code:'RIcn' ID:0 のリソース |
後者をプログラム中からのアイコンデータの読み込むためには、
リソースからデータを読み出し BMessage を経由して BBitmap を生成する必要があります。
アイコンデータを復元するには、一般的に下記のような手法を用います。
詳しくは付属のサンプルプログラムを参照してください。
============================================================================= リソースデータからアイコン群を復元して管理するクラスの例 ============================================================================= 作成したリソースデータをプログラム中で読み込むための例を示します。 リソースは、アプリケーションファイルに組み込まれているものとします。 class SIcons { public: SIcons(); const BBitmap *Bitmap(int32 index) const; { return static_cast<BBitmap *>(mList.ItemAt(index)); } protected: BList mList; }; SIcons::SIcons() { status_t status; app_info info; status = be_app->GetAppInfo(&info); if (status != B_OK) return; BFile file; status = file.SetTo(&info.ref, B_READ_ONLY); if (status != B_OK) return; BResources resources; status = resources.SetTo(&file); if (status != B_OK) return; size_t size; void *p = resources.FindResource('RIcn', 0, &size); if (p == NULL) return; BMessage msg; status = msg.Unflatten(static_cast<char *>(p)); free(p); if (status != B_OK) return; int32 index = 0; BMessage archive; while (true) { status = msg.FindMessage("icons", index++, &archive); if (status != B_OK) break; BBitmap *bitmap = cast_as(instantiate_object(&archive), BBitmap); if (bitmap) mList.AddItem(bitmap); } }目次へ戻る