Platform SDK: DirectX |
IDirectMusicObject::SetDescriptor メソッドは、オブジェクトの内部的な記述を一部またはすべてのメンバに設定する。
このメソッドは、主にローダーがオブジェクトを作成する際に使われるものであり、通常はアプリケーションが直接利用することはない。ただし、アプリケーションが DirectMusic 内にオブジェクト タイプを実装する場合、そのアプリケーションはこのメソッドをサポートすべきである。
HRESULT SetDescriptor( LPDMUS_OBJECTDESC pDesc );
成功すれば S_OK または S_FALSE (「注意」を参照すること) を返す。
失敗すれば次のエラー値のいずれかを返す。
E_INVALIDARG |
E_POINTER |
アプリケーションは通常、標準的なオブジェクトに対してこのメソッドを呼び出すことはない。IDirectMusicObject::GetDescriptor によって返されるオブジェクト ディスクリプタを変更することは可能であるが、新しい記述を IDirectMusicLoader::GetObject メソッドに正常に渡すことはできない。たとえば、オブジェクトの名前は変更できるが、GetObject はオブジェクトの元の名前を使ってそのオブジェクトを検索する。これは、GetObject がオブジェクト自身の SetDescriptor の実装に依存しているためである。
コピーされなかったメンバは、それまでの値を維持する。たとえば、あるオブジェクトが名前と GUID を既に内部で保存していたとする。新しい名前とファイル パスを指定して (さらに dwValidData に DMUS_OBJ_NAME | DMUS_OBJ_FILENAME を含めて) SetDescriptor メソッドを呼び出すと、名前は置き換えられ、ファイル名が供給されるが、GUID だけは元の値のままになる。
オブジェクトが 1 つまたは複数のメンバを設定できない場合、自らがサポートしているメンバだけを設定し、サポートしていないメンバに対応する dwValidData 内のフラグを消去し、S_FALSE を返す。アプリケーションによって定義されるオブジェクトは、少なくとも DMUS_OBJ_NAME と DMUS_OBJ_OBJECT をサポートすべきである。
Windows NT/2000 : Windows 2000 が必要。
Windows 95/98 : Windows 95 以降が必要。Windows 95 用に再配布可能な形で使用可能。
ヘッダー : dmusici.h で宣言。
IDirectMusicObject::ParseDescriptor、IDirectMusicObject::GetDescriptor