- 締切済み
win32 mciについて
WindowsVISTA 32bit にて Microsoft Visual C++ 2008を使い ゲームを作成しています。 mciSendCommandでBGMを鳴らし、PlaySoundで効果音を鳴らしています。 上記WindowsVISTA 32bitでは正常に動作しています。 ただ、Windows7 64bitで動作させると効果音が何度目かの再生の時に タイムラグが発生してwindowsも一時的に止まってしまいます。 このとき、BGMは鳴っていますが、タイムラグが解消しプログラムに 戻るとき一瞬BGMがとまります。 タイムラグの長さは0.5秒から3秒ほどで、頻度はすぐに発生することもあり、 数十回再生後に発生することもあります。 mciSendCommandはファイルからですが、 PlaySoundはファイルからでも、メモリからでも症状は同じです。 リソースはまだためしてはいません。 また、 mciSendCommandを使ってBGMを2回以上ミキシングしても 何回目かの再生で同じ症状が出ますし、 BGMをメモリにおいてPlaySoundで鳴らし、効果音をmciSendCommandで ファイルから鳴らしても何度目かで同じ症状が出ます。 プログラム実行後にSleepやタイマーで2/100秒ほどのウェイトを入れると 少し軽減されるようですが症状は出ます。 64bitOSがMCIをサポートしないというのをネット上で見ましたが、 何か対処の方法はないでしょうか? どなたかご存知の方いらっしゃれば教えてください。
- みんなの回答 (2)
- 専門家の回答
お礼
早速のご返事ありがとうございます。 waitオプションということでmciSendString関数のオプションでしょうか? PlaySoundにも同期で動作するSND_SYNCがありますが、 ゲームという特性上すぐに返ってこないので使用していません。 waitオプションの解釈が間違っていたらごめんなさい。 詳しく教えて頂けないでしょうか?