none
WindowsVistaの仕様?それともSDKの仕様? RRS feed

  • 質問

  • どうもYORIGONです。

    いきなり質問ですが、Managed DirectXを使ったプログラミングをしているのですが

    今までWindowsXP上で開発していたときに利用できたはずのコードが使えなくなり(詳しくはエラーが出るはずのないコードが例外が発生する)

    WinVista上で開発しているのを困っています。

    今は緊急でTryを使って回避してますが、これは絶対に解決したい内容です。

     

    実際に使っていたコードはこれです。

     

      Public Function MusicVolume(ByRef music As MusicBuffer, ByVal volume As Integer) As Boolean

       'もしAudioインスタンスが生成されていなかったらFalseを返す
       If music._bgm Is Nothing Then Return False

       'さらにvolumeが0未満であったり10000より大きい場合はFalseを返す
       If volume < 0 Or volume > 10000 Then
        Return False
       End If

       Try
        '音量をセットしてTrueを返す
        music._bgm.Volume = volume - 10000
       Catch
        '失敗したならFalseを返す
        Return False
       End Try

       '成功したならTrueを返す
       Return True

      End Function

     

    このコードは本来読み込まれた音楽データの音量を調節するためのメソッドですが

    Microsoft.DirectX.AudioVideoPlayback名前空間にある

    AudioクラスのメンバにVolumeというInteger型のプロパティがあるのですが

    -10000をセットすると音量は事実上無音になり0にすると最大音量になるという仕組みですが

    mp3の音楽ファイルは問題なく音量は変わるのですが、midファイルを読み込み音量を調節しようとすると

    DirectXExceptionの例外がスローされてどうにも出来ません

    以前WindowsXP HomeEditionSP2でDirectX SDK - August 2007を使っていたころは

    正常に動作してくれました。

    しかしWindowsVista HomeBasic上で同じことをしようとすると、どうしても例外が発生してしまします。

    これはVistaである仕様なのかSDKの仕様またはバグなのでしょうか?

     

    どうかご教授お願いいたします。

    2007年8月15日 14:29