いろいろあってて、5年振りに、fmod exの事を書きます。
---
ゲーム等で、音楽データが*.exeと別々になっていると、ユーザに音楽データ(ファイル)をさわってしまったりすることがあります。
対策として、音楽データのリソースを定義して、そこにデータを置きます。
※ ユーザー定義リソース/カスタムリソースと言われる物です
以下のコードが例です。
int hoge()
{
HRSRC hRes = FindResource(0, MAKEINTRESOURCE(IDR_MP3), _T("MP3"));
if(NULL != hRes){
HGLOBAL hData = LoadResource(0, hRes);
if(NULL != hData){
DWORD dataSize = SizeofResource(0, hRes);
char* data = (char*)LockResource(hData);
FMOD_CREATESOUNDEXINFO sndInfo;
ZeroMemory( &sndInfo, sizeof(FMOD_CREATESOUNDEXINFO) );
sndInfo.cbsize = sizeof(FMOD_CREATESOUNDEXINFO);
sndInfo.length = dataSize;
result = FMOD_System_CreateStream( fmodsystem, data, FMOD_OPENMEMORY,
&sndInfo, &fmodsound );
if( result != FMOD_OK ){
return -3;
}
}
}
return 0;
}
FindResourceからユーザー定義リソースがあるか捜索し、見つかった場合はLockResourceでロックします。
SizeofResourceをFMOD_CREATESOUNDEXINFOのlengthに渡します。
最後に、LockResourceからFMOD_System_CreateStreamへ渡します。
この際に第三引数に、FMOD_OPENMEMMORYを付けます。