if (CanExit())
CDialog::OnClose();
}
void CPlayerDlg::OnOK()
{
if (CanExit())
CDialog::OnOK();
}
void CPlayerDlg::OnCancel()
{
if (CanExit())
CDialog::OnCancel();
}
BOOL CPlayerDlg::CanExit()
{
// If the proxy object is still around, then the automation
// controller is still holding on to this application. Leave
// the dialog around, but hide its UI.
if (m_pAutoProxy != NULL)
{
ShowWindow(SW_HIDE);
return FALSE;
}
return TRUE;
}
void CPlayerDlg::OnButton1()
{
// TODO: Add your control notification handler code here
char szFileFilter[]=
"Mp3 File(*.mp3)|*.mp3|"
"Wma File(*.wma)|*.wma|"
"Video File(*.dat)|*.dat|"
"Wave File(*.wav)|*.wav|"
"AVI File(*.avi)|*.avi|"
"Movie File(*.mov)|*.mov|"
"Media File(*.mmm)|*.mmm|"
"Mid File(*.mid;*,rmi)|*.mid;*.rmi|"
"MPEG File(*.mpeg)|*.mpeg|"
"All File(*.*)|*.*||";
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter);
if(dlg.DoModal()==IDOK)
{
CString m_filename=dlg.GetPathName();
m_list.AddString(m_filename);
UpdateData(FALSE);
}
}
void CPlayerDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
double CurPos=m_activemovie.GetCurrentPosition();
CString filename;
if(CurPos==0){
m_list.SetCurSel(0);
m_list.GetText(0,filename);
m_activemovie.SetAutoStart(1);
m_activemovie.SetFileName(filename);
m_activemovie.Run();
m_list.GetCurSel();
m_list.InsertString(-1,filename);
m_list.DeleteString(0);
}
CDialog::OnTimer(nIDEvent);
}
void CPlayerDlg::OnButton2()
{
// TODO: Add your control notification handler code here
SetTimer(0,500,NULL);
}
void CPlayerDlg::OnButton3()
{
// TODO: Add your control notification handler code here
KillTimer(0);
m_activemovie.Stop();
}
四、小结
目前很多程序介绍的播放器,只能播放单个音频/视频文件,很少讲述如何实现多个文件的连续播放,本文试着通过控件,介绍连续播放音/视频文件的方法。我们还可以根据上述提供函数常用属性,解决程序中间的暂停、设置音量,还可以设置平衡、全屏播放等,希望本实例能给读者朋友一个启示。