Platform SDK: DirectX

ローダーの検索ディレクトリの設定

[C++]

検索対象のオブジェクトを記述する DMUS_OBJECTDESC 構造体の wszFileName メンバがフル パスを指定していない限り、ローダーはデフォルトでカレント ディレクトリを検索する。IDirectMusicLoader::SetSearchDirectory メソッドを使うと、IDirectMusicLoader::GetObjectIDirectMusicLoader::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;
}
[Visual Basic]

デフォルトでは、ロード メソッドにフル パスを渡さない限り、ローダーはカレント ディレクトリのファイル オブジェクトを検索する。DirectMusicLoader.SetSearchDirectory メソッドを使うと、DirectMusicLoader.LoadBandDirectMusicLoader.LoadCollectionDirectMusicLoader.LoadSegment、および DirectMusicLoader.LoadStyle メソッドに異なるデフォルト パスを設定することができる。