Über den folgenden Code wird es von MFC geschrieben, aber in der Testzeit, ich führe das einfache Programm, ich werde nicht einen normalen Fall erhalten, das Programm wird eine fehlgeschlagene Nachricht an mich zurückgeben, die Nachricht ist "Kann Datei nicht abspielen: [PATH]".Über den MFC CFileDialog Problem
aber wenn Sie mir die Datei festgelegt (nicht wählen Sie die den Dialog bilden), ist es Arbeit, ich das Problem nicht herausfinden können, ich hoffe, einige Leute mich .. zu beheben helfen kann
bitte meine schlechte Entschuldigung Englisch. Dank viel ..
über den Code:
// 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);
über die BASS_StreamCreateFile (bass.dll):
HSTREAM BASS_StreamCreateFile(
BOOL mem,
void *file,
QWORD offset,
QWORD length,
DWORD flags
);
über die BASS_MusicLoad (bass.dll):
HMUSIC BASS_MusicLoad(
BOOL mem,
void *file,
QWORD offset,
DWORD length,
DWORD flags,
DWORD freq
);
filePath.GetString() wäre eine bessere Wahl, IMO. – Goz
@Goz, hängt davon ab, welche MFC-Version der Benutzer hat. Ich kannte diese Methode nicht. –