ホーム > デベロッパ > BREW FAQ

BREW FAQ : リソース

リソース ファイルとは ?

リソース ファイルとは、BREW アプリで使用する文字列や画像、ダイアログ、サウンドなどの データを 1 つのファイルにまとめたものです。 リソース ファイルはリソース エディタを使用して作成します。

リソース ファイルを作成する方法については、 BREW SDK に付属の『BREW リソース エディタ ガイド』をご覧ください。

      

リソース ファイルからデータを取得するには ?

リソース ファイルからデータを取得するには、IShell インターフェイスの関数を使用します。 たとえば、ビットマップの取得には ISHELL_LoadResBitmap 関数を使用します。

ISHELL_LoadResBitmap は、以下のように定義されています。

ISHELL_LoadResBitmap(
 shell,     // IShell インターフェイスを指すポインタ
 filename,  // リソース ファイル名
 id         // リソース ID
);

この関数を使用する場合は、リソース ファイル名とリソース ID を指定する必要があります。 リソース ID とは、リソース ファイルからデータを読み込むときに使用する値で、 リソース エディタを使用して開発者が任意に設定できます。 リソース エディタを使用して設定したリソース ID は、 リソース ヘッダーファイルに定義されますので、 ユーザはリソース ヘッダーファイルをインクルードする必要があります。

リソース ファイルからデータを取得するための関数を記載します。

関数名 [BREW] 関数名 [SophiaFramework] 処理概要
ISHELL_LoadResBitmap SFBShell::LoadResBitmap リソース ファイルからビットマップを取得します。
ISHELL_LoadResData SFBShell::LoadResData リソース ファイルからデータを取得します。
ISHELL_LoadResDataEx SFBShell::LoadResDataEx リソース ファイルからデータを取得し、指定した領域や
関数が確保した領域にデータを保存します。
ISHELL_LoadResImage SFBShell::LoadResImage リソース ファイルから画像を取得します。
ISHELL_LoadResObject SFBShell::LoadResObject リソース ファイルからデータを取得し、そのデータを
操作するインターフェイスを返します。
ISHELL_LoadResSound SFBShell::LoadResSound リソース ファイルから音声を取得します。
ISHELL_LoadResString SFBShell::LoadResString リソース ファイルから文字列を取得します。

以下に、リソースからビットマップ画像を取得するコードを記載します。

[ BREW API のみを使用したコード ]

// リソース ヘッダーファイルをインクルードします。
#include "MyResource_res.h"

IShell*         shell   = app->a.m_pIShell;
IBitmap*        bmp;

// リソース ファイルからビットマップを取得します。
bmp = ISHELL_LoadResBitmap(shell, MYRESOURCE_RES_FILE, IDB_MY_PICTURE);

[ SophiaFramework を使用したコード ]

// リソース ヘッダーファイルをインクルードします。
#include "MyResource_res.h"

SFBShellSmp  shell = SFBShell::GetInstance();
SFBBitmapSmp  bmp;

// リソース ファイルからビットマップを取得します。
bmp = shell->LoadResBitmap(MYRESOURCE_RES_FILE, IDB_MY_PICTURE);
      

リソース ファイルに任意のバイナリ データを保存できますか ?

リソースエディタ を使用して、 任意のバイナリ データを画像ファイルとしてリソース ファイルに保存できます。 リソース ファイルからバイナリ データを取り出すには、 ISHELL_LoadResData 関数や ISHELL_LoadResDataEx 関数を使用します。

リソース ファイルから、任意のバイナリ データを取り出す手順を記載します。

  1. ISHELL_LoadResData 関数や ISHELL_LoadResDataEx 関数を使用し、 リソース ファイルから画像データとしてバイナリ データを取得します。
  2. 手順 1 で取得したデータの第 1 バイト目から、任意のバイナリ データの開始オフセット値を取得します。
  3. 手順 1 で取得したデータにオフセット値を加算し、任意のバイナリ データを取得します。

※ 第 3 バイト目から始まる文字列は、MIME タイプを示しています。

SophiaFramework では、 SFBShell::LoadResData 関数や SFBShell::LoadResDataEx 関数を使用します。

[ BREW API のみを使用したコード ]

// リソース ファイルから読み込むバイナリ データのリソース ID
#define IDR_MY_DATA    0x0010

byte* tmp    = NULL;
void* data   = NULL;
byte  offset = 0;

// リソース ファイルから画像データとして、バイナリ データを取得します。
// 画像としてデータを取り出すため、RESTYPE_IMAGE を引数に指定します。
tmp = (byte*)ISHELL_LoadResData(shell, MYRESOURCE_RES_FILE, IDR_MY_DATA, RESTYPE_IMAGE);

// オフセット値を取得します。
offset = *tmp;

// オフセット値を加算し、任意のバイナリ データを取得します。
// オフセットされるデータ位置には、MIME 文字列が格納されています。
data = tmp + offset;

[ SophiaFramework を使用したコード ]

// リソース ヘッダーファイルをインクルードします。
#include "MyResource_res.h"

SFBShellSmp  shell = SFBShell::GetInstance();
SFBBitmapSmp  bmp;

// リソース ファイルからビットマップを取得します。
bmp = shell->LoadResBitmap(MYRESOURCE_RES_FILE, IDB_MY_PICTURE);
      

リソース エディタとは ?

BREW リソース エディタとは、BREW アプリケーションで使用するリソース ファイル (.bar ファイル) の作成や編集をするためのエディタです。 このエディタを使用して、文字列や画像などのデータを含むリソース ファイルを作成します。

詳細は、『BREW リソース エディタ ガイド』を参照してください。

      

リソース ヘッダーファイルとは ?

リソース ヘッダーファイルとは、リソース エディタを使用して作成するヘッダーファイルです。 このヘッダーファイルには、リソース エディタを使用して作成したリソース ID が定義されています。

      

タイマーをキャンセルするには ?

登録したタイマーが満了する前にそれをキャンセルするには、 ISHELL_CancelTimer 関数を使用します。

SophiaFramework では、 SFBShell::CancelTimer 関数を使用します。

[ BREW API のみを使用したコード ]

// タイマーのキャンセル
ISHELL_CancelTimer(app->a.m_pIShell,   // IShell インターフェイス
OnTimer,            // コールバック
app);               // ユーザー データ

[ SophiaFramework を使用したコード ]

// SFBShell インスタンスを作成します。
SFBShellSmp  shell = SFBShell::GetInstance();

// タイマーのキャンセル
shell->CancelTimer(OnTimerEntry,  // コールバック
                   this);         // ユーザー データ
      

一定間隔で同じ処理を繰り返すために、ISHELL_SetTimer()を繰り返し呼ぶと、実行環境の動作が急に遅くなるのですが?

タイマーを長時間使用すると、携帯電話端末が Sleep モードに移行する場合に EVT_APP_NO_SLEEP イベントが BREW 側から送られてきます。このイベントに対する処理が行われるまで、BREW はイベントの送信を続けるようです。このイベントを処理することで、タイマーの動作が遅くなることを解消できます。