Microsoft DirectX 8.0 (C++) |
オブジェクトをロードするには、次の例に示すように、最初に IDirectMusicLoader8 インターフェイスを取得する。
IDirectMusicLoader8* m_pLoader; CoInitializeEx(NULL, 0); HRESULT hr = CoCreateInstance( CLSID_DirectMusicLoader, NULL, CLSCTX_INPROC, IID_IDirectMusicLoader8, (void**)&m_pLoader);
次に、IDirectMusicLoader8::LoadObjectFromFile または IDirectMusicLoader8::GetObject のいずれかを使用して、ファイルからオブジェクトをロードできる。前者は、DMUS_OBJECTDESC 構造体を使用してオブジェクトを記述する必要がないので便利である。
次のサンプル コードでは、以前に IDirectMusicLoader8::SetSearchDirectory で設定されたディレクトリから 4 つのセグメントをロードしている。
IDirectMusicSegment8 * m_pSegments[4]; static WCHAR wszNames[4][MAX_PATH] = { L"AudioPath1.sgt", L"AudioPath2.sgt", L"AudioPath3.wav", L"AudioPath4.sgt" }; for (DWORD dwIndex = 0; dwIndex < 4; dwIndex++) { hr = m_pLoader->LoadObjectFromFile( CLSID_DirectMusicSegment, IID_IDirectMusicSegment8, wszNames[dwIndex], (void**) &m_pSegments[dwIndex]); }
次の例では、IDirectMusicLoader8::GetObject を使用してファイルからスタイル オブジェクトをロードしている。最初のパラメータは、スタイルへのポインタを受け取る。
void myLoadStyle( IDirectMusicStyle8 **ppStyle, IDirectMusicLoader8 *pLoader) { if (pLoader) { DMUS_OBJECTDESC Desc; // スタイル オブジェクトのファイル名とクラス GUID を使って、 // Desc を初期化することから開始する。 wcscpy(Desc.wszFileName,L"c:\\mymusic\\funky\\polka.sty"); Desc.guidClass = CLSID_DirectMusicStyle; Desc.dwSize = sizeof (DMUS_OBJECTDESC); Desc.dwValidData = DMUS_OBJ_CLASS | DMUS_OBJ_FILENAME | DMUS_OBJ_FULLPATH; pLoader->GetObject(&Desc, IID_IDirectMusicStyle8, (void **) ppStyle); } }
この例では、ファイルをフル パス名で指定し、これを DMUS_OBJ_FULLPATH フラグを設定して指示している。
検索対象の特定のファイル オブジェクトを識別するには、DMUS_OBJECTDESC 構造体の wszName、guidObject、wszFileName の各メンバのいずれかに値を入力し、dwValidData メンバに適切な 1 つまたは複数のフラグを設定する。wszFileName ではなく wszName か guidObject を使ってファイルを識別する場合は、IDirectMusicLoader8::ScanDirectory メソッドを呼び出して、カレント ディレクトリ内の GUID と名前を利用可能にしなければならない。詳細については、「ディレクトリでのオブジェクト検索」を参照すること。
「リソースからのオブジェクトのロード」も参照すること。