为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

VC下自制多媒体播放器

2011-12-06 9页 doc 371KB 54阅读

用户头像

is_093673

暂无简介

举报
VC下自制多媒体播放器自制多媒体播放器 使用VC++6.0强大的AppWizard、ClassWizard和其中的各种控件可以方便地建立各种应用程序。但是想要实现更高级更复杂的功能,就要借助丰富的ActiveX控件资源了。这里就要使用VC++6.0自带的一个ActiveX控件——ActiveMovieControl Object,来建立自己的多媒体播放器。此多媒体具有一般的播放功能,能播放:*.mp3,*.wma,*.mdi,*.wav,*.avi,*.dat等文件,还有Repeat功能。 具体步骤: 1. 打开VC6.0,在Projects下选...
VC下自制多媒体播放器
自制多媒体播放器 使用VC++6.0强大的AppWizard、ClassWizard和其中的各种控件可以方便地建立各种应用程序。但是想要实现更高级更复杂的功能,就要借助丰富的ActiveX控件资源了。这里就要使用VC++6.0自带的一个ActiveX控件——ActiveMovieControl Object,来建立自己的多媒体播放器。此多媒体具有一般的播放功能,能播放:*.mp3,*.wma,*.mdi,*.wav,*.avi,*.dat等文件,还有Repeat功能。 具体步骤: 1. 打开VC6.0,在Projects下选择MFC AppWizard(exe),并取名MediaPlayer,然后建立基于对话框的应用程序。 2. 打开Resource View,选择其中的对话框,打开其中的主对话框,去掉对话框上的“确定”按钮,保留“取消”,将Caption改为“退出”。然后再在上面加上九个按钮,ID和Caption分别为   IDC_OPEN,打开;   IDC_PLAY,播放;   IDC_PAUSE,暂停;   IDC_STOP,停止;   IDC_CLOSE,关闭;   IDC_LOWER,<<=;   IDC_UPPER,=>>;   IDC_FULLSCREEN,全屏; IDC_REPEAT,重复; 再加入两个静态文本控件,分别为: IDC_STATIC,音量; IDC_STATIC2,状态:正常。 3. 点击“开始”菜单,运行 regsvr32 msdxm.ocx,出现“注册成功”的对话框后打开Projects->Add to Project->Components and Controls->Registered ActiveX Controls对话框,选择其中的ActiveMovieControl Object, Insert,OK之后,会发现控件面板上多了一项ActiveMovieControl Object,将它选中,直接放在对话框上。 按Ctrl+W打开ClassWizard为它添加变量m_ActiveMovie。各控件的布局如图: 4.为程序添加消息处理函数。打开ClassWizard,为各个按钮加入消息处理函数。在MediaPlayerDlg.cpp文件里为各消息处理函数添加代码,各代码如下: void CMediaPlayerDlg::OnClose() {     m_ActiveMovie.CloseWindow();//关闭窗口 } void CMediaPlayerDlg::OnOpen() { 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 PathName=dlg.GetPathName(); PathName.MakeUpper(); m_ActiveMovie.SetFileName(PathName); } } void CMediaPlayerDlg::OnPlay() { m_ActiveMovie.Run();//播放文件 SetTimer(0,20,NULL);//设置定时器 } void CMediaPlayerDlg::OnStop() { m_ActiveMovie.Stop();//停止播放文件 KillTimer(0);//关掉定时器 } void CMediaPlayerDlg::OnPause() { m_ActiveMovie.Pause();//暂停播放 } void CMediaPlayerDlg::OnUpper()//增加音量 { long Volume=m_ActiveMovie.GetVolume(); m_ActiveMovie.Pause(); m_ActiveMovie.SetVolume(Volume+100); m_ActiveMovie.Run(); } void CMediaPlayerDlg::OnLower()//减少音量 { long Volume=m_ActiveMovie.GetVolume(); m_ActiveMovie.Pause(); m_ActiveMovie.SetVolume(Volume-100); m_ActiveMovie.Run(); } void CMediaPlayerDlg::OnRepeat()//重复模式 { if(!isRepeat){ isRepeat=TRUE; SetDlgItemText(IDC_STATIC2,"状态:重复"); } else{ isRepeat=FALSE; SetDlgItemText(IDC_STATIC2,"状态:正常"); } } void CMediaPlayerDlg::OnFulscreeen()//全屏播放 { m_ActiveMovie.Pause(); m_ActiveMovie.SetFullScreenMode(true); m_ActiveMovie.SetMovieWindowSize(SW_SHOWMAXIMIZED); m_ActiveMovie.Run(); } 这里需要注意的是,下面的函数OnTimer()需通过ClassWizard(Ctrl+W)来添加,不能直接复制: void CMediaPlayerDlg::OnTimer(UINT nIDEvent) { double CurrentPos=m_ActiveMovie.GetCurrentPosition(); if(CurrentPos==0&&isRepeat)//如果当前是文件的起始位置而且为重复播放状态 m_ActiveMovie.Run(); CDialog::OnTimer(nIDEvent); } 5. 为使播放器具有重复播放功能,需在头文件MediaPlayerDlg.h 加入控制变量BOOL isRepeat;类型可为Private。 同时修改OnInitDialog()函数: BOOL CMediaPlayerDlg::OnInitDialog() { CDialog::OnInitDialog(); isRepeat=FALSE; …… } 6. 这样此播放器就具有一般的媒体播放功能了,但为了有更好的用户界面,我们给播放器加上皮肤。我们使用现在比较流行的Skin++ for VC++6.0作为皮肤控件给我们的播放器加上漂亮的皮肤。 (1)复制 SkinPPWTL.h、SkinPPWTL.dll、SkinPPWTL.lib 以及 Chinablue.ssk 皮肤到程序源码下。 (2)在 MFC 下:Project->Setting->Link->Object/library modules 处添加 SkinPPWTL.lib (左侧设置要选择“所有配置”)。 (3)点击菜单:Project->Add to Project->File 打开 SkinPPWTL.h 文件。 (4)在 StdAfx.h 中添加头文件:#include "SkinPPWTL.h" (5)在MediaPlayerDlg.cpp类中的OnInitDialog()中加上skinppLoadSkin(_T("Chinablue.ssk")); 7.为了使界面更加美观,还要设置MediaPlayer对话框的样式,取消“系统菜单”的显示: 8. 全部完成,现在编译、连接并运行看看效果,打开个mp3文件试听一下,效果不错! 9. : 这个播放器主要使用了ActiveX控件——ActiveMovieControl Object作为播放核心,界面简单的采用了若干按钮来控制播放。 再添加该控件时发现控件本身带有视频窗口,加大控件大小后就可以直接带有视频播放窗口了。进过测试完全可以播放更多的视频,于是修改OnOpen函数: void CAbcDlg::OnOpen() { char szFileFilter[]= "所有支持类型|*.mp3;*.wma;*.dat;*.wav;*.avi;*.mov;*.rmvb;*.mmm;*.mid;*.rmi;*.mpeg|" "Mp3 File(*.mp3)|*.mp3|" "Wma File(*.wma)|*.wma|" "Video File(*.dat)|*.dat|" "Wave File(*.wav)|*.wav|" "AVI File(*.avi)|*.avi|" "Movie File(*.mov)|*.mov|" "Rmvb File(*.rmvb)|*.rmvb|" "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 PathName=dlg.GetPathName(); PathName.MakeUpper(); m_ActiveMovie.SetFileName(PathName); } }
/
本文档为【VC下自制多媒体播放器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索