| アイコン一覧ウィンドウでのグループ | 格納手法 |
| 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);
}
}
目次へ戻る