世界上第一艘船:一个CFileDialog的文件地址问题。

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/05 23:45:33
小弟在作一个MP3播放器的过程中遇到这样的问题:
如果用CFileDialog获取多个MP3文件地址就无法播放。但如果只添加一个MP3文件则能播放。请大家帮小弟分析一下是什么原因呢?我该如何来修改呢?
谢谢哦。
void CMp3PlayerDlg::OnPlay()
{
//m_Audio是已经定的HWND窗口句柄
m_Audio = NULL;

if(m_Audio == NULL)
{
m_Audio = MCIWndCreate(this->GetSafeHwnd(),
AfxGetResourceHandle(),
WS_CHILD | WS_VISIBLE|MCIWNDF_NOMENU,m_Path);
m_Status.SetWindowText(_T("Playing..."));
}
else
{
MCIWndHome(m_Audio);
}

MCIWndPlay(m_Audio);
Pause = FALSE;
m_Play.EnableWindow(TRUE);
}
bool CMp3PlayerDlg::OpenFiles(bool bListAdd)
{
//打开文件并添加到播放列表
CFileDialog FileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT|OFN_NOCHANGEDIR,
"MP3 Files (*.mp3)|*.mp3|");
if(FileDlg.DoModal()!=IDOK)
return FALSE;
if(!bListAdd)
m_List.ResetContent();
POSITION pos=FileDlg.GetStartPosition();
CString lpszFile;
lpszFile=FileDlg.GetNextPathName(pos);
while(1)
{
m_List.AddString(lpszFile);
if(!pos) break;
lpszFile=FileDlg.GetNextPathName(pos);
}
m_iList=0;
m_totalFiles=m_List.GetCount();
m_Path = FileDlg.GetPathName();
UpdateData(FALSE);

return TRUE;

}

//刚学会C++。兴奋之中。夜不想寐。在线等大家的指导。呵呵。
能帮小弟解决问题的。再送100分!

问题基本上是出在这里了
m_totalFiles=m_List.GetCount();
m_Path = FileDlg.GetPathName(); //问题所在
UpdateData(FALSE);

可以试着将该语句改为
m_Path = m_List.GetHead();