Platform SDK: DirectX |
検索対象のオブジェクトを記述する DMUS_OBJECTDESC 構造体の wszFileName メンバがフル パスを指定していない限り、ローダーはデフォルトでカレント ディレクトリを検索する。IDirectMusicLoader::SetSearchDirectory メソッドを使うと、IDirectMusicLoader::GetObject と IDirectMusicLoader::EnumObject の各メソッドで異なったデフォルト パスを設定できる。このデフォルト パスをすべてのオブジェクトに適用することも、特定のクラスのオブジェクトだけに適用することもできる。
次のコード例では、スタイル ファイルの検索パスを設定している。
HRESULT mySetLoaderPath ( IDirectMusicLoader *pILoader) // 以前に作成済み。 { return pILoader->SetSearchDirectory( CLSID_DirectMusicStyle, L"c:\\mymusic\\funky", FALSE); }
この関数を呼び出しておくと、アプリケーションは次のコード例のように、フル パスを指定せずにファイル名だけを使ってスタイルをロードできる。
HRESULT myLoadStyleFromPath ( IDirectMusicStyle **ppIStyle, // スタイルへのポインタを取り出す。 IDirectMusicLoader *pILoader) // ローダーは既に作成済。 { HRESULT hr; DMUS_OBJECTDESC Desc; ZeroMemory(&Desc, sizeof(DMUS_OBJECTDESC); Desc.dwSize = sizeof(DMUS_OBJECTDESC); wcscpy(Desc.wszFileName, L"polka.sty"); // 短いファイル名。 Desc.guidClass = CLSID_DirectMusicStyle; // オブジェクト クラス Desc.dwValidData = DMUS_OBJ_CLASS | DMUS_OBJ_FILENAME; hr = pILoader->GetObject(&Desc, IID_IDirectMusicStyle, (void **) ppIStyle); return hr; }
デフォルトでは、ロード メソッドにフル パスを渡さない限り、ローダーはカレント ディレクトリのファイル オブジェクトを検索する。DirectMusicLoader.SetSearchDirectory メソッドを使うと、DirectMusicLoader.LoadBand、DirectMusicLoader.LoadCollection、DirectMusicLoader.LoadSegment、および DirectMusicLoader.LoadStyle メソッドに異なるデフォルト パスを設定することができる。