vc++ 播放器代码:*char szFilmakefile.vcter[]=("Mp3 File(.mp3)|.mp3|","Wma File(.wma)|.wma|",&

当前访客身份:游客 [
当前位置:
&源代码:http://download.csdn.net/detail/nuptboyzhb/4267664
1.&&&&&&新建一个基于对话框的应用程序
2.&&&&&&删除默认控件,增加一个按钮控件,ID设为ID_OPEN;
3.&&&&&&在对话框的空白处右键插入ActiveX控件,选择Windows Media Player。注意:路径为C:\WINDOWS\system32\wmp.dll
4.&&&&&&为ActiveX控件关联一个CWMPPlayer4类型的变量m_注意,添加相应的类。(这些有VC6.0自动添加)
5.&&&&&&为第2步的按钮控件添加消息处理响应函数,实现文件的打开,并将文件的路径设置为m_player的播放路径。
代码如下:
szFileFilter[]=&Mp3
File(*.mp3)|*.mp3|&
File(*.wma)|*.wma|&
File(*.dat)|*.dat|&
File(*.wav)|*.wav|&
File(*.avi)|*.avi|&
File(*.mov)|*.mov|&
File(*.mmm)|*.mmm|&
File(*.*,rmi)|*.*.rmi|&
File(*.mpeg)|*.mpeg|&
File(*.*)|*.*|| &;//文件类型过滤
CFileDialog
dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter);
if(dlg.DoModal()==IDOK)
PathName=dlg.GetPathName();
PathName.MakeUpper();
m_player.SetUrl(PathName);
原文链接:
共有0个评论
有什么技术问题吗?
长平狐的其他问题
类似的话题关于MFC基于对话框编写一个简易音视频播放器的搜索推荐 -MFC-TryCatch
>> 相关推荐
关于的搜索推荐
在对话框中添加了一个windowsMediaPlayer控件,然后加了两个按钮--“打开”和“播放”。
我的问题是:打开一个avi格式的视频文件后,只有声音,却没有画面,这是为什么呢?是属性值没有设置好吗?
两按钮的消息响应函数: voidCtMediaPlayerDlg::OnBnClickedOpen() { //TODO:在此添加控件通知处理程序代码 charszFileFilter[]= "所有支持类型|*.mp3;*.*.*.*.*.*.*.*.*.*.mpeg|" "Mp3File(*.mp3)|*.mp3|" "WmaFile(*.wma)|*.wma|" "VideoFile(*.dat)|*.dat|" "WaveFile(*.wav)|*.wav|" "AVIFile(*.avi)|*.avi|" "MovieFile(*.mov)|*.mov|" "RmvbFile(*.rmvb)|*.rmvb|" "MediaFile(*.mmm)|*.mmm|" "MidFile(*.*,rmi)|*.*.rmi|" "MPEGFile(*.mpeg)|*.mpeg|" "AllFile(*.*)|*.*||";//文件类型过滤 CFileDialogdlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter); if(dlg.DoModal()==IDOK){ CStringPathName=dlg.GetPathName(); PathName.MakeUpper(); m_mediaPlayer.put_FileName(PathName); //m_mediaPlayer.put_DisplayMode(...
主要是基于C#编写的视频播放器源代码有的下网提供一下,在这里谢谢了。
编译环境: vc2005, 基于MFC的对话框程序问题: 如何在一个对话框里调用avi程序,avi占用对话框的大小。大家帮帮忙,谢谢了!!!
------------
CAnimateCtrl 使...
在VC下的PICTURE控件有5个选项,其中可以选RECTANGE选项做视频窗口对象,但是EVC下没有这个选项,EVC下的PICTURE控件只有2个选项BITMAP\ICON,哪位知道如何加视...
testDlg.hUINT showvideo( LPVOID lpParameter
);class CtestDlg : public CDialogEx{// 构造public:CtestDlg(CWnd* pParent = NULL);// 标准构造函数// 对话框...
rt,求大家指点...
我的开发环境是VC2008,我初学MFC,想做一个视频播放器,但是CAnimateCtrl只能播放avi文件,不知道怎么能播放不同的文件和图片,音乐,怎么得到视频的前一帧后一帧,希望...
大神们!最近要做一个基于P2P的视频播放软件,要求是能够搜索局域网内所有用户共享的视频,并能够通过P2P方式进行播放。我现在想做的是一个纯P2P的结构,到网上搜...
因为要处理视频的每一帧所以使用了一个while循环来播放每一帧,程序如下:while(pFrame = cvQueryFrame( pCapture )) {DrawPicToHDC(pFrame, IDC_STATIC_PIC1);}...
我用MFC单文档插入一个window media player 控件,然后有个打开按钮可以实现视频的播放,但是我想往我做的播放器里拖一个视频就播放不了,怎么样实现这个功能,请...
本帖最后由 VisualEleven 于
08:57:27 编辑
------------
我有一个 视频教程,是讲MFC聊天室的,原理在里面都讲了。分给我啊,急用分解决问题。
用vs2010编写MFC基于对话框程序,可视化窗口为什么重启vs后没有了。求怎么打开
------------
楼主的可视化窗口 指的是哪个??
------------
是这样,我这里有一个可以播放AVI的播放器,现在要求让该播放器可以播放其他格式的视频里面是用MCI接口实现的,但我对MFC不太了解只找到一个文件里有这句话:MCI...
新手求助:目前我使用SDK已经将摄像头的视频显示在对话框的一个picture控件中,想将这个视频转化为灰度图显示在另一个picture控件中,因为在SDK函数中有将图片保...
CWMPControls m_COcx1 m_avP问题:this-&m_control=static_cast&CWMPControls&(this-&m_avPlayer.get_controls());this-&m_contro...
------------
我也来学习学习
------------
在Create函数里增加吧
------------
在APP里面的
有主对话框domoudle 前面调你的对话框就行了2693人阅读
&&&& 继上一次利用DirectShow编写了一个C#版的简单MP3播放器之后,这两天利用空余时间对其作了初步的完善,主要工作如下:&&& 1、对原有的代码进行拆分,主要拆分成五个类,包括一个Form类FrmPlayer、一个播放核心类MediaPlayCore、一个媒体文件信息类MediaFileInfo、一个基础类Utils(包含各种公共的静态方法)、一个由多个枚举类型组成的枚举类。&&& 2、增加了以下功能:添加文件/文件夹、删除所选/全部、播放模式(包括单曲播放、单曲循环、顺序播放、循环播放和随机播放)。&&& 3、修改了播放列表的显示功能,可以显示序号、标题、时长和大小。
&&& 修改完善后的界面如下图所示:
&&& 根据修改后的功能,各个部分的主要代码如下:1、FrmPlayer.cs// *************************************************************** //// Project Name&& :& MyMp3Player// Version&&&&&&& :& 1.0.1// Author Name&&& :& Simon Huang ()// Creation Date& :& // Modified Date& :& // Modified Disc& :// Statement&&&&& :& Some code of this project from open source.// *************************************************************** //
using Susing System.Collections.Gusing System.Dusing System.Windows.Fusing System.IO;
namespace MyMp3Player{&&& public partial class FrmPlayer : Form&&& {&&&&&&& private const int WM_APP = 0x8000;&&&&&&& private const int WM_GRAPHNOTIFY = WM_APP + 1;&&&&&&& private const int EC_COMPLETE = 0x01;
&&&&&&& private MediaPlayCore MediaP
&&&&&&& private PlayMode m_currentPlayMode = PlayMode.O // 播放模式
&&&&&&& private string m_strFileP& // 文件路径&&&&&&& private bool m_blnAutoMove = // 播放完成后自动移动到下一曲(单曲播放/单曲循环模式除外)&&&&&&& private bool m_blnNewPlay =& // 开始一次全新的播放
&&&&&&& private int m_incrementId = 0;&&&&&&& private int m_lastPlayIndex = -1;&&&&&&& private int m_currentPlayIndex = -1;
&&&&&&& private Dictionary&int, MediaFileInfo& m_mediaFileT
&&&&&&& public FrmPlayer()&&&&&&& {&&&&&&&&&&& InitializeComponent();&&&&&&& }
&&&&&&& /// &summary&&&&&&&& /// 应用程序的主入口点。&&&&&&& /// &/summary&&&&&&&& [STAThread]&&&&&&& static void Main()&&&&&&& {&&&&&&&&&&& Application.EnableVisualStyles();&&&&&&&&&&& Application.SetCompatibleTextRenderingDefault(false);&&&&&&&&&&& Application.Run(new FrmPlayer());&&&&&&& }
&&&&&&& #region protected method, override WndProc method&&&&&&& /// &summary&&&&&&&& /// 重写WndProc&&&&&&& /// &/summary&&&&&&&& /// &param name="m"&&/param&&&&&&&& protected override void WndProc(ref Message m)&&&&&&& {&&&&&&&&&&& if (m.Msg == WM_GRAPHNOTIFY)&&&&&&&&&&& {&&&&&&&&&&&&&&& int lEventC&&&&&&&&&&&&&&& int lParam1, lParam2;
&&&&&&&&&&&&&&& while (true)&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&& try&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& MediaPlay.MediaEventEx.GetEvent(out lEventCode, out lParam1, out lParam2, 0);&&&&&&&&&&&&&&&&&&&&&&& MediaPlay.MediaEventEx.FreeEventParams(lEventCode, lParam1, lParam2);
&&&&&&&&&&&&&&&&&&&&&&& if (lEventCode == EC_COMPLETE)&&&&&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&&&&&& m_blnAutoMove =&&&&&&&&&&&&&&&&&&&&&&&&&&& this.Next(); // 自动切换到下一曲&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&& catch (Exception)&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&& }&&&&&&&&&&& }
&&&&&&&&&&& base.WndProc(ref m);&&&&&&& }&&&&&&& #endregion
&&&&&&& private void FrmPlayer_Load(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& MediaPlay = new MediaPlayCore();&&&&&&&&&&& m_mediaFileTable = new Dictionary&int, MediaFileInfo&();
&&&&&&&&&&& this.UpdatePlayTime();&&&&&&&&&&& this.UpdatePlayList();&&&&&&&&&&& this.UpdatePlayStatus();&&&&&&& }
&&&&&&& private void FrmPlayer_FormClosing(object sender, FormClosingEventArgs e)&&&&&&& {&&&&&&&&&&& if (MediaPlay != null)&&&&&&&&&&& {&&&&&&&&&&&&&&& MediaPlay.CleanUp();&&&&&&&&&&& }&&&&&&& }
&&&&&&& #region private methods&&&&&&& /// &summary&&&&&&&& /// 播放&&&&&&& /// &/summary&&&&&&&& private void Play()&&&&&&& {&&&&&&&&&&& if (m_blnNewPlay)& // 开始一次全新的播放&&&&&&&&&&& {&&&&&&&&&&&&&&& this.FirstUpdateMediaPlayList(m_lastPlayIndex);
&&&&&&&&&&&&&&& MediaFileInfo mediaFileInfo =&&&&&&&&&&&&&&& lock (m_mediaFileTable)&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&& if (m_mediaFileTable.ContainsKey(m_currentPlayIndex))&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& mediaFileInfo = (MediaFileInfo)m_mediaFileTable[m_currentPlayIndex];&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&& if (mediaFileInfo != null)&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&& m_strFilePath = mediaFileInfo.P&&&&&&&&&&&&&&&&&&& lblTitle.Text = mediaFileInfo.T
&&&&&&&&&&&&&&&&&&& MediaPlay.CleanUp();&&&&&&&&&&&&&&&&&&& MediaPlay.InitMediaPlayer(m_strFilePath);&&&&&&&&&&&&&&&&&&& MediaPlay.MediaEventEx.SetNotifyWindow((int)this.Handle, WM_GRAPHNOTIFY, 0);&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&& lblTotalTime.Text = Utils.ConvertTimeToString(MediaPlay.Duration);&&&&&&&&&&&&&&&&&&& this.SecondUpdateMediaPlayList(m_currentPlayIndex);
&&&&&&&&&&&&&&&&&&& m_lastPlayIndex = m_currentPlayI&&&&&&&&&&&&&&& }&&&&&&&&&&& }
&&&&&&&&&&& MediaPlay.Play();
&&&&&&&&&&& this.UpdatePlayTime();&&&&&&&&&&& this.UpdatePlayStatus();&&&&&&& }
&&&&&&& /// &summary&&&&&&&& /// 暂停&&&&&&& /// &/summary&&&&&&&& private void Pause()&&&&&&& {&&&&&&&&&&& MediaPlay.Pause();&&&&&&&&&&& this.UpdatePlayTime();&&&&&&&&&&& this.UpdatePlayStatus();&&&&&&& }
&&&&&&& /// &summary&&&&&&&& /// 停止&&&&&&& /// &/summary&&&&&&&& private void Stop()&&&&&&& {&&&&&&&&&&& MediaPlay.Stop();&&&&&&&&&&& this.UpdatePlayStatus();&&&&&&& }
&&&&&&& #region play previous media file&&&&&&& /// &summary&&&&&&&& /// 上一曲&&&&&&& /// &/summary&&&&&&&& private void Previous()&&&&&&& {&&&&&&&&&&& int currentIndex = 0;
&&&&&&&&&&& switch (m_currentPlayMode)&&&&&&&&&&& {&&&&&&&&&&&&&&& case PlayMode.Single:& // 单曲播放&&&&&&&&&&&&&&& case PlayMode.SingleCycle:& // 单曲循环&&&&&&&&&&&&&&& case PlayMode.Order:& // 顺序播放&&&&&&&&&&&&&&&&&&& if (m_currentPlayIndex == 0)&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& currentIndex = 0;& // 已移到最前面&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& currentIndex = this.FindListViewItemIndex(m_lastPlayIndex);&&&&&&&&&&&&&&&&&&&&&&& currentIndex -= 1;&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& case PlayMode.Cycle:& // 循环播放&&&&&&&&&&&&&&&&&&& if (m_currentPlayIndex == 0)&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& currentIndex = lsvPlayList.Items.Count - 1;&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& currentIndex = this.FindListViewItemIndex(m_lastPlayIndex);&&&&&&&&&&&&&&&&&&&&&&& currentIndex -= 1;&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& case PlayMode.Random:& // 随机播放&&&&&&&&&&&&&&&&&&& Random random = new Random();&&&&&&&&&&&&&&&&&&& currentIndex = random.Next(lsvPlayList.Items.Count);&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& default:& // 默认顺序播放&&&&&&&&&&&&&&&&&&& if (m_currentPlayIndex == 0)&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& currentIndex = 0;& // 已移到最前面&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& currentIndex = this.FindListViewItemIndex(m_lastPlayIndex);&&&&&&&&&&&&&&&&&&&&&&& currentIndex -= 1;&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&& this.CancelItemSelected();
&&&&&&&&&&& m_currentPlayIndex = currentI&&&&&&&&&&& m_blnNewPlay =&&&&&&&&&&& this.Play();&&&&&&& }&&&&&&& #endregion
&&&&&&& #region play next media file&&&&&&& /// &summary&&&&&&&& /// 下一曲&&&&&&& /// &/summary&&&&&&&& private void Next()&&&&&&& {&&&&&&&&&&& int currentIndex = 0;
&&&&&&&&&&& switch (m_currentPlayMode)&&&&&&&&&&& {&&&&&&&&&&&&&&& case PlayMode.Single:& // 单曲播放&&&&&&&&&&&&&&&&&&& if (m_blnAutoMove)&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& this.Stop();&&&&&&&&&&&&&&&&&&&&&&& currentIndex = -1;&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& if (m_currentPlayIndex == lsvPlayList.Items.Count - 1)&&&&&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&&&&&& currentIndex = lsvPlayList.Items.Count - 1; // 已移到最后面&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&&&&&& currentIndex = this.FindListViewItemIndex(m_lastPlayIndex);&&&&&&&&&&&&&&&&&&&&&&&&&&& currentIndex += 1;&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& case PlayMode.SingleCycle:& // 单曲循环&&&&&&&&&&&&&&&&&&& if (m_blnAutoMove)&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& currentIndex = m_lastPlayI&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& if (m_currentPlayIndex == lsvPlayList.Items.Count - 1)&&&&&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&&&&&& currentIndex = lsvPlayList.Items.Count - 1; // 已移到最后面&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&&&&&& currentIndex = this.FindListViewItemIndex(m_lastPlayIndex);&&&&&&&&&&&&&&&&&&&&&&&&&&& currentIndex += 1;&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& case PlayMode.Order:& // 顺序播放&&&&&&&&&&&&&&&&&&& if (m_currentPlayIndex == lsvPlayList.Items.Count - 1)&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& currentIndex = lsvPlayList.Items.Count - 1; // 已移到最后面&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& currentIndex = this.FindListViewItemIndex(m_lastPlayIndex);&&&&&&&&&&&&&&&&&&&&&&& currentIndex += 1;&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& case PlayMode.Cycle:& // 循环播放&&&&&&&&&&&&&&&&&&& if (m_currentPlayIndex == lsvPlayList.Items.Count - 1)&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& currentIndex = 0;&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& currentIndex = this.FindListViewItemIndex(m_lastPlayIndex);&&&&&&&&&&&&&&&&&&&&&&& currentIndex += 1;&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& case PlayMode.Random:& // 随机播放&&&&&&&&&&&&&&&&&&& Random random = new Random();&&&&&&&&&&&&&&&&&&& currentIndex = random.Next(lsvPlayList.Items.Count);&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& default:& // 默认顺序播放&&&&&&&&&&&&&&&&&&& if (m_currentPlayIndex == lsvPlayList.Items.Count - 1)&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& currentIndex = lsvPlayList.Items.Count - 1; // 已移到最后面&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& currentIndex = this.FindListViewItemIndex(m_lastPlayIndex);&&&&&&&&&&&&&&&&&&&&&&& currentIndex += 1;&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&& this.CancelItemSelected();
&&&&&&&&&&& if (currentIndex != -1)&&&&&&&&&&& {&&&&&&&&&&&&&&& m_currentPlayIndex = currentI&&&&&&&&&&&&&&& m_blnNewPlay =&&&&&&&&&&&&&&& this.Play();&&&&&&&&&&& }&&&&&& &&&&&&& }&&&&&&& #endregion
&&&&&&& /// &summary&&&&&&&& /// 打开文件&&&&&&& /// &/summary&&&&&&&& private void AddOpenFiles()&&&&&&& {&&&&&&&&&&& OpenFileDialog openFileDlg = new OpenFileDialog();
&&&&&&&&&&& openFileDlg.Filter = "MP3文件(*.mp3)|*.mp3";&&&&&&&&&&& openFileDlg.Multiselect =
&&&&&&&&&&& if (DialogResult.OK == openFileDlg.ShowDialog())&&&&&&&&&&& {&&&&&&&&&&&&&&& string[] fileNames = openFileDlg.FileN
&&&&&&&&&&&&&&& if (fileNames != null)&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&& this.InitFileInfoAndPlay(fileNames);&&&&&&&&&&&&&&& }&&&&&&&&&&& }&&&&&&& }
&&&&&&& /// &summary&&&&&&&& /// 打开文件夹&&&&&&& /// &/summary&&&&&&&& private void AddOpenFolder()&&&&&&& {&&&&&&&&&&& FolderBrowserDialog folderBrowserDlg = new FolderBrowserDialog();&&&&&&&&&&& folderBrowserDlg.Description = "请选择一个文件夹:";&&&&&&&&&&& folderBrowserDlg.ShowNewFolderButton =
&&&&&&&&&&& if (DialogResult.OK == folderBrowserDlg.ShowDialog())&&&&&&&&&&& {&&&&&&&&&&&&&&& string folderName = folderBrowserDlg.SelectedP
&&&&&&&&&&&&&&& string[] fileNames = Directory.GetFiles(folderName, "*.mp3");
&&&&&&&&&&&&&&& if (fileNames != null)&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&& this.InitFileInfoAndPlay(fileNames);&&&&&&&&&&&&&&& }&&&&&&&&&&& }&&&&&&& }
&&&&&&& /// &summary&&&&&&&& /// 删除所选文件&&&&&&& /// &/summary&&&&&&&& private void DeleteSelected()&&&&&&& {&&&&&&&&&&& if (lsvPlayList.SelectedItems.Count == 0)&&&&&&&&&&& {&&&&&&&&&&&&&&& MessageBox.Show("请选择要删除的文件!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);&&&&&&&&&&& }&&&&&&&&&&& else&&&&&&&&&&& {&&&&&&&&&&&&&&& this.RemoveItemsFormMediaPlayList();&&&&&&&&&&& }&&&&&&& }
&&&&&&& /// &summary&&&&&&&& /// 删除所有文件&&&&&&& /// &/summary&&&&&&&& private void DeleteAll()&&&&&&& {&&&&&&&&&&& if (m_mediaFileTable != null)&&&&&&&&&&& {&&&&&&&&&&&&&&& m_mediaFileTable.Clear();&&&&&&&&&&& }
&&&&&&&&&&& if (lsvPlayList.Items.Count & 0)&&&&&&&&&&& {&&&&&&&&&&&&&&& lsvPlayList.Items.Clear();&&&&&&&&&&& }
&&&&&&&&&&& m_incrementId = 0;&&&&&&&&&&& m_lastPlayIndex = -1;&&&&&&&&&&& m_currentPlayIndex = -1;&&&&&&& }
&&&&&&& /// &summary&&&&&&&& /// 获取文件信息并添加到播放列表,然后开始播放&&&&&&& /// &/summary&&&&&&&& /// &param name="fileNames"&&/param&&&&&&&& private void InitFileInfoAndPlay(string[] fileNames)&&&&&&& {&&&&&&&&&&& foreach (string fileName in fileNames)&&&&&&&&&&& {&&&&&&&&&&&&&&& MediaFileInfo mediaFileInfo = new MediaFileInfo();
&&&&&&&&&&&&&&& FileInfo fi = new FileInfo(fileName);
&&&&&&&&&&&&&&& mediaFileInfo.ID = m_incrementId;&&&&&&&&&&&&&&& mediaFileInfo.Title = Utils.GetFileName(fi.Name);&&&&&&&&&&&&&&& mediaFileInfo.Length = Utils.ConvertTimeToString(MediaPlay.GetDuration(fileName));&&&&&&&&&&&&&&& mediaFileInfo.Size = Utils.GetSizeInfo(fi.Length);&&&&&&&&&&&&&&& mediaFileInfo.Path = fileN
&&&&&&&&&&&&&&& m_mediaFileTable.Add(m_incrementId, mediaFileInfo);
&&&&&&&&&&&&&&& this.AddToMediaPlayList(mediaFileInfo);
&&&&&&&&&&&&&&& m_incrementId++;&&&&&&&&&&& }
&&&&&&&&&&& if (m_currentPlayIndex == -1) // 添加前播放列表为空&&&&&&&&&&& {&&&&&&&&&&&&&&& // 选中第一个文件并进行播放&&&&&&&&&&&&&&& lsvPlayList.Select();&&&&&&&&&&&&&&& lsvPlayList.Items[0].Selected =&&&&&&&&&&&&&&& m_lastPlayIndex = m_currentPlayIndex = 0;&&&&&&&&&&&&&&& this.Play();&&&&&&&&&&& }
&&&&&&&&&&& this.UpdatePlayList();&&&&&&& }
&&&&&&& /// &summary&&&&&&&& /// 添加文件到播放列表&&&&&&& /// &/summary&&&&&&&& /// &param name="fileInfo"&&/param&&&&&&&& private void AddToMediaPlayList(MediaFileInfo fileInfo)&&&&&&& {&&&&&&&&&&& lsvPlayList.BeginUpdate();
&&&&&&&&&&& ListViewI&&&&&&&&&&& lvi = new ListViewItem((fileInfo.ID +1).ToString());&&&&&&&&&&& lvi.SubItems.Add(fileInfo.Title);&&&&&&&&&&& lvi.SubItems.Add(fileInfo.Length);&&&&&&&&&&& lvi.SubItems.Add(fileInfo.Size);
&&&&&&&&&&& lsvPlayList.Items.Add(lvi);
&&&&&&&&&&& lsvPlayList.EndUpdate();&&&&&&& }
&&&&&&& /// &summary&&&&&&&& /// 第一次更新播放列表&&&&&&& /// &/summary&&&&&&&& /// &param name="id"&&/param&&&&&&&& private void FirstUpdateMediaPlayList(int id)&&&&&&& {&&&&&&&&&&& ListViewItem lvi = lsvPlayList.FindItemWithText((id + 1).ToString());&&&&&&&&&&& if (lvi != null)&&&&&&&&&&& {&&&&&&&&&&&&&&& lvi.ForeColor = Color.B&&&&&&&&&&& }&&&&&&& }
&&&&&&& /// &summary&&&&&&&& /// 第二次更新播放列表&&&&&&& /// &/summary&&&&&&&& /// &param name="id"&&/param&&&&&&&& private void SecondUpdateMediaPlayList(int id)&&&&&&& {&&&&&&&&&&& ListViewItem lvi = lsvPlayList.FindItemWithText((id + 1).ToString());&&&&&&&&&&& if (lvi != null)&&&&&&&&&&& {&&&&&&&&&&&&&&& lvi.ForeColor = Color.G&&&&&&&&&&& }&&&&&&& }
&&&&&&& /// &summary&&&&&&&& /// 取消已选择项的状态&&&&&&& /// &/summary&&&&&&&& private void CancelItemSelected()&&&&&&& {&&&&&&&&&&& foreach (ListViewItem lvi in lsvPlayList.SelectedItems)&&&&&&&&&&& {&&&&&&&&&&&&&&& lvi.Selected =&&&&&&&&&&& }&&&&&&& }
&&&&&&& /// &summary&&&&&&&& /// 从播放列表移除选中的文件&&&&&&& /// &/summary&&&&&&&& private void RemoveItemsFormMediaPlayList()&&&&&&& {&&&&&&&&&&& foreach (ListViewItem lvi in lsvPlayList.SelectedItems)&&&&&&&&&&& {&&&&&&&&&&&&&&& int playId = Utils.StringToInteger(lvi.Text) - 1;
&&&&&&&&&&&&&&& lock (m_mediaFileTable)&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&& if (m_mediaFileTable.ContainsKey(playId))&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& m_mediaFileTable.Remove(playId);&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& lvi.Remove();&&&&&&&&&&& }&&&&&&& }
&&&&&&& //private void UpdatePlayIndex(int playId)&&&&&&& //{&&&&&&& //&&& MediaFileInfo mediaFileInfo =&&&&&&& //&&& lock (m_mediaFileTable)&&&&&&& //&&& {&&&&&&& //&&&&&&& foreach (int id in m_mediaFileTable.Keys)&&&&&&& //&&&&&&& {&&&&&&& //&&&&&&&&&&& if (id & playId)&&&&&&& //&&&&&&&&&&& {&&&&&&& //&&&&&&&&&&&&&&& if (m_mediaFileTable.ContainsKey(id))&&&&&&& //&&&&&&&&&&&&&&& {&&&&&&& //&&&&&&&&&&&&&&&&&&& mediaFileInfo = (MediaFileInfo)m_mediaFileTable[id];&&&&&&& //&&&&&&&&&&&&&&& }
&&&&&&& //&&&&&&&&&&&&&&& if (mediaFileInfo != null)&&&&&&& //&&&&&&&&&&&&&&& {&&&&&&& //&&&&&&&&&&&&&&&&&&& mediaFileInfo.ID = id - 1;&&&&&&& //&&&&&&&&&&&&&&& }&&&&&&& //&&&&&&&&&&& }&&&&&&& //&&&&&&& }&&&&&&& //&&& }&&&&&&& //}
&&&&&&& /// &summary&&&&&&&& /// 查找并返回指定项的索引&&&&&&& /// &/summary&&&&&&&& /// &param name="id"&&/param&&&&&&&& /// &returns&&/returns&&&&&&&& private int FindListViewItemIndex(int id)&&&&&&& {&&&&&&&&&&& ListViewItem lvi = lsvPlayList.FindItemWithText((id + 1).ToString());&&&&&&&&&&& if (lvi != null)&&&&&&&&&&& {&&&&&&&&&&&&&&& return lvi.I&&&&&&&&&&& }&&&&&&&&&&& else&&&&&&&&&&& { &&&&&&&&&&&&&&& return 0;&&&&&&&&&&& }&&&&&&& }&&&&&&& #endregion
&&&&&&& #region update control status&&&&&&& /// &summary&&&&&&&& /// 更新播放时间及播放进度&&&&&&& /// &/summary&&&&&&&& private void UpdatePlayTime()&&&&&&& {&&&&&&&&&&& if (MediaPlay != null)&&&&&&&&&&& {&&&&&&&&&&&&&&& lblCurrentTime.Text = Utils.ConvertTimeToString(MediaPlay.CurrentPosition);
&&&&&&&&&&&&&&& trackBarPlay.Value = (int)(100 * (MediaPlay.CurrentPosition / MediaPlay.Duration));&&&&&&&&&&& }&&&&&&&&&&& else&&&&&&&&&&& {&&&&&&&&&&&&&&& lblTotalTime.Text = "00:00";&&&&&&&&&&&&&&& lblCurrentTime.Text = "00:00";&&&&&&&&&&& }&&&&&&& }
&&&&&&& /// &summary&&&&&&&& /// 根据播放列表状态更新相应按钮状态&&&&&&& /// &/summary&&&&&&&& private void UpdatePlayList()&&&&&&& {&&&&&&&&&&& if (lsvPlayList.Items.Count & 0)&&&&&&&&&&& {&&&&&&&&&&&&&&& picPrevious.Enabled =&&&&&&&&&&&&&&& picNext.Enabled =&&&&&&&&&&&&&&& picPrevious.Image = global::MyMp3Player.Properties.Resources.previous_&&&&&&&&&&&&&&& picNext.Image = global::MyMp3Player.Properties.Resources.next_&&&&&&&&&&& }&&&&&&&&&&& else&&&&&&&&&&& {&&&&&&&&&&&&&&& picPrevious.Enabled =&&&&&&&&&&&&&&& picNext.Enabled =&&&&&&&&&&&&&&& picPrevious.Image = global::MyMp3Player.Properties.Resources.previous_&&&&&&&&&&&&&&& picNext.Image = global::MyMp3Player.Properties.Resources.next_&&&&&&&&&&& }&&&&&&& }
&&&&&&& /// &summary&&&&&&&& /// 更新播放按钮状态&&&&&&& /// &/summary&&&&&&&& private void UpdatePlayStatus()&&&&&&& {&&&&&&&&&&& switch (MediaPlay.CurrentStatus)&&&&&&&&&&& {&&&&&&&&&&&&&&& case MediaStatus.None:&&&&&&&&&&&&&&&&&&& picPlayPause.Enabled =&&&&&&&&&&&&&&&&&&& picStop.Enabled =&&&&&&&&&&&&&&&&&&& picPlayPause.Image = global::MyMp3Player.Properties.Resources.play_&&&&&&&&&&&&&&&&&&& picStop.Image = global::MyMp3Player.Properties.Resources.stop_&&&&&&&&&&&&&&&&&&& lblCurrentTime.Text = "00:00";&&&&&&&&&&&&&&&&&&& lblTotalTime.Text = "00:00";&&&&&&&&&&&&&&&&&&& trackBarPlay.Value = 0;&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& case MediaStatus.Paused:&&&&&&&&&&&&&&&&&&& picPlayPause.Enabled =&&&&&&&&&&&&&&&&&&& picStop.Enabled =&&&&&&&&&&&&&&&&&&& picPlayPause.Image = global::MyMp3Player.Properties.Resources.play_&&&&&&&&&&&&&&&&&&& picStop.Image = global::MyMp3Player.Properties.Resources.stop_&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& case MediaStatus.Running:&&&&&&&&&&&&&&&&&&& picPlayPause.Enabled =&&&&&&&&&&&&&&&&&&& picStop.Enabled =&&&&&&&&&&&&&&&&&&& picPlayPause.Image = global::MyMp3Player.Properties.Resources.pause_&&&&&&&&&&&&&&&&&&& picStop.Image = global::MyMp3Player.Properties.Resources.stop_&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& case MediaStatus.Stopped:&&&&&&&&&&&&&&&&&&& picPlayPause.Enabled =&&&&&&&&&&&&&&&&&&& picStop.Enabled =&&&&&&&&&&&&&&&&&&& picPlayPause.Image = global::MyMp3Player.Properties.Resources.play_&&&&&&&&&&&&&&&&&&& picStop.Image = global::MyMp3Player.Properties.Resources.stop_&&&&&&&&&&&&&&&&&&& lblCurrentTime.Text = "00:00";&&&&&&&&&&&&&&&&&&& lblTotalTime.Text = "00:00";&&&&&&&&&&&&&&&&&&& trackBarPlay.Value = 0;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&& }
&&&&&&& /// &summary&&&&&&&& /// 更新播放模式的菜单选中状态&&&&&&& /// &/summary&&&&&&&& private void UpdatePlayModeMenuStatus()&&&&&&& {&&&&&&&&&&& switch (m_currentPlayMode)&&&&&&&&&&& {&&&&&&&&&&&&&&& case PlayMode.Single:&&&&&&&&&&&&&&&&&&& menuModeSingle.Checked =&&&&&&&&&&&&&&&&&&& menuModeSingleCycle.Checked =&&&&&&&&&&&&&&&&&&& menuModeOrder.Checked =&&&&&&&&&&&&&&&&&&& menuModeCycle.Checked =&&&&&&&&&&&&&&&&&&& menuModeRandom.Checked =&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& case PlayMode.SingleCycle:&&&&&&&&&&&&&&&&&&& menuModeSingle.Checked =&&&&&&&&&&&&&&&&&&& menuModeSingleCycle.Checked =&&&&&&&&&&&&&&&&&&& menuModeOrder.Checked =&&&&&&&&&&&&&&&&&&& menuModeCycle.Checked =&&&&&&&&&&&&&&&&&&& menuModeRandom.Checked =&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& case PlayMode.Order:&&&&&&&&&&&&&&&&&&& menuModeSingle.Checked =&&&&&&&&&&&&&&&&&&& menuModeSingleCycle.Checked =&&&&&&&&&&&&&&&&&&& menuModeOrder.Checked =&&&&&&&&&&&&&&&&&&& menuModeCycle.Checked =&&&&&&&&&&&&&&&&&&& menuModeRandom.Checked =&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& case PlayMode.Cycle:&&&&&&&&&&&&&&&&&&& menuModeSingle.Checked =&&&&&&&&&&&&&&&&&&& menuModeSingleCycle.Checked =&&&&&&&&&&&&&&&&&&& menuModeOrder.Checked =&&&&&&&&&&&&&&&&&&& menuModeCycle.Checked =&&&&&&&&&&&&&&&&&&& menuModeRandom.Checked =&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& case PlayMode.Random:&&&&&&&&&&&&&&&&&&& menuModeSingle.Checked =&&&&&&&&&&&&&&&&&&& menuModeSingleCycle.Checked =&&&&&&&&&&&&&&&&&&& menuModeOrder.Checked =&&&&&&&&&&&&&&&&&&& menuModeCycle.Checked =&&&&&&&&&&&&&&&&&&& menuModeRandom.Checked =&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& default:&&&&&&&&&&&&&&&&&&& menuModeSingle.Checked =&&&&&&&&&&&&&&&&&&& menuModeSingleCycle.Checked =&&&&&&&&&&&&&&&&&&& menuModeOrder.Checked =&&&&&&&&&&&&&&&&&&& menuModeCycle.Checked =&&&&&&&&&&&&&&&&&&& menuModeRandom.Checked =&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&& }
&&&&&&& #endregion
&&&&&&& /// &summary&&&&&&&& /// 定时器&&&&&&& /// &/summary&&&&&&&& /// &param name="sender"&&/param&&&&&&&& /// &param name="e"&&/param&&&&&&&& private void timer1_Tick(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& if (MediaPlay.CurrentStatus == MediaStatus.Running)&&&&&&&&&&& {&&&&&&&&&&&&&&& this.UpdatePlayTime();&&&&&&&&&&& }&&&&&&& }
&&&&&&& /// &summary&&&&&&&& /// 播放进度条控制&&&&&&& /// &/summary&&&&&&&& /// &param name="sender"&&/param&&&&&&&& /// &param name="e"&&/param&&&&&&&& private void trackBarPlay_Scroll(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& if (MediaPlay.CurrentStatus != MediaStatus.None)&&&&&&&&&&& {&&&&&&&&&&&&&&& MediaPlay.CurrentPosition = MediaPlay.Duration * trackBarPlay.Value / 100;&&&&&&&&&&& }&&&&&&& }
&&&&&&& #region play control click events&&&&&&& private void picPlayPause_Click(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& if (MediaPlay.CurrentStatus == MediaStatus.Running)&&&&&&&&&&& {&&&&&&&&&&&&&&& this.Pause();&&&&&&&&&&&&&&& picPlayPause.Image = global::MyMp3Player.Properties.Resources.pause_&&&&&&&&&&& }&&&&&&&&&&& else&&&&&&&&&&& {&&&&&&&&&&&&&&& m_blnNewPlay =&&&&&&&&&&&&&&& this.Play();&&&&&&&&&&&&&&& picPlayPause.Image = global::MyMp3Player.Properties.Resources.play_&&&&&&&&&&& }&&&&&&& }
&&&&&&& private void picPlayPause_MouseMove(object sender, MouseEventArgs e)&&&&&&& {&&&&&&&&&&& if (MediaPlay.CurrentStatus == MediaStatus.Running)&&&&&&&&&&& {&&&&&&&&&&&&&&& picPlayPause.Image = global::MyMp3Player.Properties.Resources.pause_&&&&&&&&&&& }&&&&&&&&&&& else&&&&&&&&&&& {&&&&&&&&&&&&&&& picPlayPause.Image = global::MyMp3Player.Properties.Resources.play_&&&&&&&&&&& }&&&&&&& }
&&&&&&& private void picPlayPause_MouseLeave(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& if (MediaPlay.CurrentStatus == MediaStatus.Running)&&&&&&&&&&& {&&&&&&&&&&&&&&& picPlayPause.Image = global::MyMp3Player.Properties.Resources.pause_&&&&&&&&&&& }&&&&&&&&&&& else&&&&&&&&&&& {&&&&&&&&&&&&&&& picPlayPause.Image = global::MyMp3Player.Properties.Resources.play_&&&&&&&&&&& }&&&&&&& }
&&&&&&& private void picStop_Click(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& this.Stop();&&&&&&& }
&&&&&&& private void picStop_MouseMove(object sender, MouseEventArgs e)&&&&&&& {&&&&&&&&&&& picStop.Image = global::MyMp3Player.Properties.Resources.stop_&&&&&&& }
&&&&&&& private void picStop_MouseLeave(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& picStop.Image = global::MyMp3Player.Properties.Resources.stop_&&&&&&& }
&&&&&&& private void picPrevious_Click(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& this.Previous();&&&&&&& }
&&&&&&& private void picPrevious_MouseMove(object sender, MouseEventArgs e)&&&&&&& {&&&&&&&&&&& picPrevious.Image = global::MyMp3Player.Properties.Resources.previous_&&&&&&& }
&&&&&&& private void picPrevious_MouseLeave(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& picPrevious.Image = global::MyMp3Player.Properties.Resources.previous_&&&&&&& }
&&&&&&& private void picNext_Click(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& this.Next();&&&&&&& }
&&&&&&& private void picNext_MouseMove(object sender, MouseEventArgs e)&&&&&&& {&&&&&&&&&&& picNext.Image = global::MyMp3Player.Properties.Resources.next_&&&&&&& }
&&&&&&& private void picNext_MouseLeave(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& picNext.Image = global::MyMp3Player.Properties.Resources.next_&&&&&&& }&&&&&&& #endregion
&&&&&&& #region add file/folder click events&&&&&&& private void menuAddFile_Click(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& this.AddOpenFiles();&&&&&&& }
&&&&&&& private void menuAddFolder_Click(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& this.AddOpenFolder();&&&&&&& }&&&&&&& #endregion
&&&&&&& #region delete file/files click events&&&&&&& private void menuDeleteSelected_Click(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& this.DeleteSelected();&&&&&&& }
&&&&&&& private void menuDeleteAll_Click(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& this.DeleteAll();&&&&&&& }&&&&&&& #endregion
&&&&&&& #region play mode click events&&&&&&& private void menuModeSingle_Click(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& // 更新播放模式的菜单选择状态&&&&&&&&&&& m_currentPlayMode = PlayMode.S&&&&&&&&&&& this.UpdatePlayModeMenuStatus();& &&&&&&& }
&&&&&&& private void menuModeSingleCycle_Click(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& // 更新播放模式的菜单选择状态&&&&&&&&&&& m_currentPlayMode = PlayMode.SingleC&&&&&&&&&&& this.UpdatePlayModeMenuStatus();&&&&&&& }
&&&&&&& private void menuModeOrder_Click(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& // 更新播放模式的菜单选择状态&&&&&&&&&&& m_currentPlayMode = PlayMode.O&&&&&&&&&&& this.UpdatePlayModeMenuStatus();&&&&&&& }
&&&&&&& private void menuModeCycle_Click(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& // 更新播放模式的菜单选择状态&&&&&&&&&&& m_currentPlayMode = PlayMode.C&&&&&&&&&&& this.UpdatePlayModeMenuStatus();&&&&&&& }
&&&&&&& private void menuModeRandom_Click(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& // 更新播放模式的菜单选择状态&&&&&&&&&&& m_currentPlayMode = PlayMode.R&&&&&&&&&&& this.UpdatePlayModeMenuStatus();&&&&&&& }&&&&&&& #endregion
&&&&&&& /// &summary&&&&&&&& /// 双击选中文件并播放&&&&&&& /// &/summary&&&&&&&& /// &param name="sender"&&/param&&&&&&&& /// &param name="e"&&/param&&&&&&&& private void lsvPlayList_DoubleClick(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& if (lsvPlayList.Items.Count & 0)&&&&&&&&&&& {&&&&&&&&&&&&&&& m_blnNewPlay =&&&&&&&&&&&&&&& m_currentPlayIndex = Utils.StringToInteger(lsvPlayList.SelectedItems[0].SubItems[0].Text) - 1;&&&&&&&&&&&&&&& this.Play();&&&&&&&&&&& }&&&&&&& }&&& }}
2、MediaPlayCore.CSusing Susing System.Collections.Gusing System.Lusing System.T
using QuartzTypeL
namespace MyMp3Player{&&& class MediaPlayCore&&& {&&&&&&& #region member fields
&&&&&&& private FilgraphManager m_objFilterGraph =&&&&&&& private IBasicAudio m_objBasicAudio =&&&&&&& private IMediaEvent m_objMediaEvent =&&&&&&& private IMediaEventEx m_objMediaEventEx =&&&&&&& private IMediaPosition m_objMediaPosition =&&&&&&& private IMediaControl m_objMediaControl =
&&&&&&& private MediaStatus m_currentStatus = MediaStatus.N
&&&&&&& #endregion
&&&&&&& #region public properties
&&&&&&& public IMediaEventEx MediaEventEx&&&&&&& {&&&&&&&&&&& get { return m_objMediaEventEx; }&&&&&&& }
&&&&&&& public MediaStatus CurrentStatus&&&&&&& {&&&&&&&&&&& get { return m_currentS }&&&&&&&&&&& set { m_currentStatus = }&&&&&&& }
&&&&&&& public double Duration&&&&&&& {&&&&&&&&&&& get&&&&&&&&&&& {&&&&&&&&&&&&&&& if (m_objMediaPosition != null)&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&& return m_objMediaPosition.D&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&& return 0.1;&&&&&&&&&&&&&&& }&&&&&&&&&&& }&&&&&&& }
&&&&&&& public double CurrentPosition&&&&&&& {&&&&&&&&&&& get&&&&&&&&&&& {&&&&&&&&&&&&&&& if (m_objMediaPosition != null)&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&& return m_objMediaPosition.CurrentP&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&& return 0.0;&&&&&&&&&&&&&&& }&&&&&&&&&&& }
&&&&&&&&&&& set&&&&&&&&&&& {&&&&&&&&&&&&&&& if (m_objMediaPosition != null)&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&& m_objMediaPosition.CurrentPosition =&&&&&&&&&&&&&&& }&&&&&&&&&&& }&&&&&&& }
&&&&&&& #endregion
&&&&&&& #region public methods&&&&&&& /// &summary&&&&&&&& /// 初始化播放&&&&&&& /// &/summary&&&&&&&& /// &param name="fileName"&文件名称(全路径)&/param&&&&&&&& public void InitMediaPlayer(string fileName)&&&&&&& {&&&&&&&&&&& m_objFilterGraph = new FilgraphManager();&&&&&&&&&&& m_objFilterGraph.RenderFile(fileName);
&&&&&&&&&&& m_objBasicAudio = m_objFilterGraph as IBasicA&&&&&&&&&&& m_objMediaEvent = m_objFilterGraph as IMediaE
&&&&&&&&&&& m_objMediaEventEx = m_objFilterGraph as IMediaEventEx;
&&&&&&&&&&& m_objMediaPosition = m_objFilterGraph as IMediaP
&&&&&&&&&&& m_objMediaControl = m_objFilterGraph as IMediaC&&&&&&& }
&&&&&&& /// &summary&&&&&&&& /// 播放&&&&&&& /// &/summary&&&&&&&& public void Play()&&&&&&& {&&&&&&&&&&& m_objMediaControl.Run();&&&&&&&&&&& m_currentStatus = MediaStatus.R&&&&&&& }
&&&&&&& /// &summary&&&&&&&& /// 暂停&&&&&&& /// &/summary&&&&&&&& public void Pause()&&&&&&& {&&&&&&&&&&& m_objMediaControl.Pause();&&&&&&&&&&& m_currentStatus = MediaStatus.P&&&&&&& }
&&&&&&& /// &summary&&&&&&&& /// 停止&&&&&&& /// &/summary&&&&&&&& public void Stop()&&&&&&& {&&&&&&&&&&& m_objMediaControl.Stop();&&&&&&&&&&& m_objMediaPosition.CurrentPosition = 0;&&&&&&&&&&& m_currentStatus = MediaStatus.S&&&&&&& }
&&&&&&& /// &summary&&&&&&&& /// 获取文件的播放时长&&&&&&& /// &/summary&&&&&&&& /// &param name="fileNameList"&文件&/param&&&&&&&& /// &returns&播放时长&/returns&&&&&&&& public double GetDuration(string fileName)&&&&&&& {&&&&&&&&&&& FilgraphManager filterGraph = new FilgraphManager();
&&&&&&&&&&& filterGraph.RenderFile(fileName);&&&&&&&&&&& IMediaPosition mediaPosition = filterGraph as IMediaP
&&&&&&&&&&& return mediaPosition.D&&&&&&& }
&&&&&&& /// &summary&&&&&&&& /// 清理资源&&&&&&& /// &/summary&&&&&&&& public void CleanUp()&&&&&&& {&&&&&&&&&&& if (m_objMediaControl != null)&&&&&&&&&&&&&&& m_objMediaControl.Stop();
&&&&&&&&&&& m_currentStatus = MediaStatus.S
&&&&&&&&&&& if (m_objMediaEventEx != null)&&&&&&&&&&&&&&& m_objMediaEventEx.SetNotifyWindow(0, 0, 0);
&&&&&&&&&&& if (m_objMediaControl != null) m_objMediaControl =&&&&&&&&&&& if (m_objMediaPosition != null) m_objMediaPosition =&&&&&&&&&&& if (m_objMediaEventEx != null) m_objMediaEventEx =&&&&&&&&&&& if (m_objMediaEvent != null) m_objMediaEvent =&&&&&&&&&&& if (m_objBasicAudio != null) m_objBasicAudio =&&&&&&&&&&& if (m_objFilterGraph != null) m_objFilterGraph =&&&&&&& }&&&&&&& #endregion&&& }}
3、MediaFileInfo.CSusing Susing System.Collections.Gusing System.Lusing System.T
namespace MyMp3Player{&&& class MediaFileInfo&&& {&&&&&&& private int m_& // 流水号&&&&&&& private string m_title = string.E& // 标题&&&&&&& private string m_length = string.E& // 时长&&&&&&& private string m_size = string.E& // 大小&&&&&&& private string m_path = string.E& // 文件路径
&&&&&&& public int ID&&&&&&& {&&&&&&&&&&& get { return m_ }&&&&&&&&&&& set { m_id = }&&&&&&& }
&&&&&&& public string Title&&&&&&& {&&&&&&&&&&& get { return m_ }&&&&&&&&&&& set { m_title = }&&&&&&& }
&&&&&&& public string Length&&&&&&& {&&&&&&&&&&& get { return m_ }&&&&&&&&&&& set { m_length = }&&&&&&& }
&&&&&&& public string Size&&&&&&& {&&&&&&&&&&& get { return m_ }&&&&&&&&&&& set { m_size = }&&&&&&& }
&&&&&&& public string Path&&&&&&& {&&&&&&&&&&& get { return m_ }&&&&&&&&&&& set { m_path = }&&&&&&& }&&& }}
4、Utils.CSusing Susing System.Collections.Gusing System.Lusing System.T
namespace MyMp3Player{&&& class Utils&&& {&&&&&&& /// &summary&&&&&&&& /// 将时长转换为字符串的时间格式&&&&&&& /// &/summary&&&&&&&& /// &param name="duration"&时长&/param&&&&&&&& /// &returns&字符串的时间格式&/returns&&&&&&&& public static string ConvertTimeToString(double duration)&&&&&&& {&&&&&&&&&&& int s = (int)&&&&&&&&&&& int h = s / 3600;&&&&&&&&&&& int m = (s - (h * 3600)) / 60;&&&&&&&&&&& s = s - (h * 3600 + m * 60);
&&&&&&&&&&& return String.Format("{0:D2}:{1:D2}", m, s);&&&&&&& }
&&&&&&& /// &summary&&&&&&&& /// 获取文件名称&&&&&&& /// &/summary&&&&&&&& /// &param name="name"&&/param&&&&&&&& /// &returns&&/returns&&&&&&&& public static string GetFileName(string name)&&&&&&& {&&&&&&&&&&& string fileName =&&&&&&&&&&& fileName = fileName.Substring(0, fileName.Length - 4);&&&&&&&&&&& if (fileName.IndexOf("&") & 0)&&&&&&&&&&& {&&&&&&&&&&&&&&& fileName = fileName.Replace("&", "&&");&&&&&&&&&&& }
&&&&&&&&&&& return fileN&&&&&&& }
&&&&&&& /// &summary&&&&&&&& /// 转换文件大小&&&&&&& /// &/summary&&&&&&&& /// &param name="size"&大小(字节数)&/param&&&&&&&& /// &returns&转换后的大小&/returns&&&&&&&& public static string GetSizeInfo(long size)&&&&&&& {&&&&&&&&&&& string retval = "";
&&&&&&&&&&& if (size & 1024)&&&&&&&&&&& {&&&&&&&&&&&&&&& retval = string.Format("{0:n2} Byte", size);&&&&&&&&&&& }&&&&&&&&&&& else if ((size / 1024) & 1024)&&&&&&&&&&& {&&&&&&&&&&&&&&& retval = string.Format("{0:n2} KB", ((double)size / 1024));&&&&&&&&&&& }&&&&&&&&&&& else if ((size / 1024 / 1024) & 1024)&&&&&&&&&&& {&&&&&&&&&&&&&&& retval = string.Format("{0:n2} MB", ((double)size / 1024 / 1024));&&&&&&&&&&& }&&&&&&&&&&& else if ((size / 1024 / 1024 / 1024) & 1024)&&&&&&&&&&& {&&&&&&&&&&&&&&& retval = string.Format("{0:n2} GB", ((double)size / 1024 / 1024 / 1024));&&&&&&&&&&& }
&&&&&&&&&&&&&&&&&& }
&&&&&&& /// &summary&&&&&&&& /// 将字符串数值转换为整型数值&&&&&&& /// &/summary&&&&&&&& /// &param name="s"&&/param&&&&&&&& /// &returns&&/returns&&&&&&&& public static int StringToInteger(string s)&&&&&&& {&&&&&&&&&&& int retval = 0;
&&&&&&&&&&& if (!string.IsNullOrEmpty(s))&&&&&&&&&&& {&&&&&&&&&&&&&&& retval = Int32.Parse(s);&&&&&&&&&&& }
&&&&&&&&&&&&&&&&&& }&&& }}
5、枚举public enum MediaStatus &&& {&&&&&&& None, &&&&&&& Stopped, &&&&&&& Paused,&&&&&&& Running &&& };
&&& public enum SortType&&& {&&&&&&& ASC,&&&&&&& DES&&& };
&&& public enum PlayMode&&& { &&&&&&& Single,&&&&&&& SingleCycle,&&&&&&& Order,&&&&&&& Cycle,&&&&&&& Random&&& };
&&& 在测试过程中,仍然发现了一些问题,需要在后续进行完善,敬请期待。
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:167712次
积分:2310
积分:2310
排名:第8205名
原创:66篇
评论:152条
(2)(1)(1)(1)(2)(6)(1)(7)(6)(10)(2)(4)(3)(5)(3)(2)(8)(9)}

我要回帖

更多关于 makefile.vc 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信