次のコードについては、MFCによって書かれていますが、テスト時に、私は単純なプログラムを実行します。通常の場合はありません。プログラムは私に失敗したメッセージを返します。 「ファイルを再生できません:[PATH]」です。MFCについてCFileDialog問題
しかし、私は、ファイル(ダイアログを形成する選択しない)に固定すれば、それは仕事で、私は問題を見つけることができない、私はいくつかの人が修正するために私を助けることができると思います。..
私の貧弱な言い訳してください英語。おかげでたくさんの..コードについて
:BASS_StreamCreateFile(bass.dll)について
// Check Bass Version
if (HIWORD(BASS_GetVersion()) != BASSVERSION) {
this->MessageBox(_T("An incorrect version of BASS.DLL was loaded"), _T("Error!"), MB_ICONSTOP | MB_OK);
return;
}
// Start Bass
if (!BASS_Init(-1, 44100, 0, NULL, NULL)) {
this->MessageBox(_T("Can't initialize device"), _T("Error!"), MB_ICONSTOP | MB_OK);
return;
}
CString filePath = _T("");
CFileDialog dialog(true, _T("mp3"), _T("*.mp3"), OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_EXPLORER, _T("*.*|All File|*.mp3|MP3 File||"), NULL);
if (dialog.DoModal() == IDOK) {
filePath = dialog.GetPathName();
}
if (filePath == "") {
this->MessageBox(_T("Please select file first"), _T("Error!"), MB_ICONSTOP | MB_OK);
return;
}
//char * filePathChar = (char *) (LPCTSTR) filePath;
DWORD channel;
if (!(channel = BASS_StreamCreateFile(false, filePath, 0, 0, 0))
&& !(channel = BASS_MusicLoad(false, filePath, 0, 0, BASS_MUSIC_RAMPS | BASS_MUSIC_POSRESET | BASS_MUSIC_PRESCAN, 0))) {
this->MessageBox(_T("Can't play file:\n" + filePath), _T("Error!"), MB_ICONSTOP | MB_OK);
BASS_Free();
return;
}
BASS_ChannelPlay(channel,false);
:
HSTREAM BASS_StreamCreateFile(
BOOL mem,
void *file,
QWORD offset,
QWORD length,
DWORD flags
);
BASS_MusicLoad(bass.dll)について:
HMUSIC BASS_MusicLoad(
BOOL mem,
void *file,
QWORD offset,
DWORD length,
DWORD flags,
DWORD freq
);
filePath.GetString()がより良い選択肢になります。 – Goz
@ Gozの場合、ユーザーのMFCのバージョンによって異なります。私はその方法を知らなかった。 –