關於下面的代碼,它是由MFC編寫的,但是在測試的時候,我運行簡單的程序,我不會得到一個正常的情況,程序會向我返回一條失敗的消息,消息是「無法播放文件:[PATH]」。關於MFC CFileDialog問題
,但如果我固定的文件(不選擇窗體對話框),它是工作,我不能找出問題,我希望有人能幫助我解決..
請原諒我那可憐的英語。非常感謝..
關於代碼:
// 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);
關於BASS_StreamCreateFile(bass.dll):
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()會是一個更好的選擇,IMO。 – Goz 2009-08-24 10:56:47
@Goz,它取決於用戶具有的MFC版本。我不知道那種方法。 – 2009-08-24 11:15:40