トップページ > 過去ログ > 記事閲覧
サウンドが再生されない
名前:PATOLE 日時: 2010/06/09 16:26

VC++でDXライブラリを使用しています。 DXライブラリと、標準の、GetOpenFileName();関数などで、ダイアログボックスを表示し、ファイルを読み込んだ後に、 PlaySoundFile関数を使用すると、音楽が再生されなくなります。 なにが原因でしょうか?

Page: 1 |

Re: サウンドが再生されない ( No.1 )
名前:Will 日時:2010/06/10 09:54

情報が少なすぎて回答できません。 現象が再現できるソースか環境を提供してもらえますか。
Re: サウンドが再生されない ( No.2 )
名前:PATOLE 日時:2010/06/10 19:44

>>Willさん 質問する側として失礼しました。 現象が再現できるソースを投稿します。 #include "DxLib.h" #include <windows.h> static OPENFILENAME ofn = {0}; static TCHAR strFile[MAX_PATH] , strCustom[256] = TEXT("Before files\0*.*\0\0"); static LPCTSTR strFileTitle[MAX_PATH]; int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){ ChangeWindowMode(TRUE);//ウィンドウモード if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化 ofn.lStructSize = sizeof (OPENFILENAME); ofn.hwndOwner = 0; ofn.lpstrFilter = TEXT("TXT FILE {*.txt}\0*.patl\0") TEXT("ALL FILE {*.*}\0*.*\0\0"); ofn.lpstrCustomFilter = strCustom; ofn.nMaxCustFilter = 256; ofn.nFilterIndex = 0; ofn.lpstrFile = strFile; ofn.nMaxFile = MAX_PATH; ofn.nMaxFileTitle = MAX_PATH; ofn.Flags = OFN_FILEMUSTEXIST; ofn.lpstrDefExt = "txt"; PlaySoundFile("image\\aaa.mp3",DX_PLAYTYPE_LOOP); while(ProcessMessage()==0 && ClearDrawScreen()==0 ){ if(CheckHitKey(KEY_INPUT_Z)==1){ GetOpenFileName(&ofn); } if(CheckHitKey(KEY_INPUT_X)==1){ PlaySoundFile("image\\aaa.mp3",DX_PLAYTYPE_LOOP); } ScreenFlip(); } DxLib_End(); return 0; } Zキーでダイアログボックスを表示して、なんらかのファイルを選択した後に、Xで音楽を再生すると、再生されません。 image\\となっているのは、フォルダを渡して読み込んだ場合にのみ、読み込めなくなります。。。 恐らく、音楽だけでなく、ファイルオープンに失敗するようです。 Logを見てもファイルオープンで失敗しているようです。 fopenなどでファイルを読み込んでもエラーになります。
Re: サウンドが再生されない ( No.3 )
名前:いっち 日時:2010/06/10 21:09

GetOpenFileName の処理結果として、カレントディレクトリが変更されるためではないでしょうか? ファイルのパスを絶対パスにして試してみてください。
Re: サウンドが再生されない ( No.4 )
名前:PATOLE 日時:2010/06/11 00:43

>>いっちさん ありがとうございます! おかげ様で解決できました。 仰る通り、カレントディレクトリが変更されていたので、GetOpenFileNameの後にカレントディレクトリをもう一度指定して実行してみたところ、見事にいけました。 凄くスッキリしました。 本当にありがとうございます。

Page: 1 |