トップページ > 過去ログ > 記事閲覧
コモンダイアログGetOpenFileNameを使うには?
名前:DiG 日時: 2011/06/05 20:53

好きな音声ファイルをBGMに出来るように、 ファイルの名前を得るコモンダイアログGetOpenFileNameを使いたいのですが不具合がでてしまいます。 環境は Win7 VC++2010EE DXライブラリVer3.03a です。 下の関数get_music_nameで音声ファイル名を得て、 LoadSoundMem( (音声ファイル名) ) として、 PlaySoundMem で再生するようにしています。 その再生は問題なくできるのですが、このget_music_nameを使った後に LoadGraph や LoadSoundMem を使ってファイルを読み込んでも、その画像や音声ファイルが使えません(よみこめてない?)。 カレントディレクトリは変わっていないようなのでメモリがぐちゃぐちゃになったのかなぁとは思うのですが・・・ WinAPIについてはあまり知らないのですが、ダイアログを登録していないからなのか?とか、 プロシージャを用意しなきゃいけないのか?と思って調べてみてもよくわかりませんでした・・・ どうすればよいでしょうか? char* get_music_name(){ OPENFILENAME ofn; static TCHAR filename_full[MAX_PATH]; // ファイル名(フルパス)を受け取る領域 static TCHAR filename[MAX_PATH]; // ファイル名を受け取る領域 // 構造体に情報をセット ZeroMemory( &ofn, sizeof(OPENFILENAME) ); // 最初にゼロクリアしておく ofn.lStructSize = sizeof(OPENFILENAME); // 構造体のサイズ ofn.hwndOwner = GetMainWindowHandle(); // コモンダイアログの親ウィンドウハンドル ofn.lpstrFilter = _T("mp3(*.mp3)\0*.mp3\0\0"); // ファイルの種類 ofn.lpstrFile = filename_full; // 選択されたファイル名(フルパス)を受け取る変数のアドレス ofn.lpstrFileTitle = filename; // 選択されたファイル名を受け取る変数のアドレス ofn.nMaxFile = sizeof(filename_full); // lpstrFileに指定した変数のサイズ ofn.nMaxFileTitle = sizeof(filename); // lpstrFileTitleに指定した変数のサイズ ofn.Flags = OFN_FILEMUSTEXIST; // フラグ指定 ofn.lpstrTitle = _T("BGMを選択(mp3のみ)"); // コモンダイアログのキャプション ofn.lpstrDefExt = _T("mp3"); // デフォルトのファイルの種類 // ファイルを開くコモンダイアログを作成 if( !GetOpenFileName( &ofn ) ) { MessageBox( NULL, _T("ファイル読み込み中止"), _T("ファイル読み込み中止"), MB_OK ); SendMessage( NULL, WM_CLOSE, 0, 0 ); return NULL; } return filename_full; } ※このコードは下のサイトのものをもじったものです http: //w w w.geocities.jp/ky_webid/win32c/055.html

Page: 1 |

Re: コモンダイアログGetOpenFileNameを使うには? ( No.1 )
名前:いっち 日時:2011/06/05 22:36

GetOpenFileName はカレントディレクトリを変更したと思います。 LoadGraph やなんかのパスを絶対パスに変更して確かめてみてください。
Re: コモンダイアログGetOpenFileNameを使うには? ( No.2 )
名前:DiG (解決) 日時:2011/06/06 19:50

GetOpenFileName はカレントディレクトリをへんこうしていますね・・・ 一度 GetOpenFileName の後でカレントディレクトリを表示してみて、変わっていなかったと思ってたんですが、 間違って GetOpenFileName の前でカレントディレクトリを表示するか何かして勘違いしていたみたいです。 GetOpenFileName の後にディレクトリを戻すようにして解決しました。 ありがとうございました。

Page: 1 |