在VC6.0下自制多媒体播放器

2016-02-19 21:42 3 1 收藏

有一种朋友不在生活里,却在生命力;有一种陪伴不在身边,却在心间。图老师即在大家的生活中又在身边。这么贴心的服务你感受到了吗?话不多说下面就和大家分享在VC6.0下自制多媒体播放器吧。

【 tulaoshi.com - 编程语言 】

  VC6.0可谓是微软的王牌产品,它以强大的功能而赢得了广大程序员的爱好。而用VC的AppWizard、ClassWizard和其中的各种控件可以方便地建立应用程序。 本文就介绍用VC6.0自带的一个ActiveX控件----ActiveMovieControl Object,来建立自己的多媒体播放器。此多媒体具有一般的播放功能,能播放*.mp3,*.wma,*.mdi,*.wav,*.avi,*.dat等文件,还有Repeat功能。

  具体步骤:

  1. 打开VC6.0,在Projects下选择MFC AppWizard(exe),并取名MediaPlayer,然后建立基于对话框(Dialog Based)的运用程序。

  2. 打开Resource View,选择其中的对话框,打开其中的主对话框,去掉对话框上的“确定”按钮,保留“取消”,将Caption改为“Exit”。然后再在上面加上九个按钮,ID和Caption分别为

  IDC_OPEN,Open;

  IDC_PLAY,Play;

  IDC_PAUSE,Pause;

  IDC_STOP,Stop;

  IDC_CLOSE,Close;

  IDC_LOWER,=;

  IDC_UPPER,=;

  IDC_FULLSCREEN,Full;

  IDC_REPEAT,Repeat;

  再加入两个静态文本控件,分别为IDC_STATIC,Volume;IDC_STATIC2,Status:Normal。

3. 再打开Projects-Add to Project-Components and Controls-Registered ActiveX Controls对话框,选择其中的ActiveMovieControl Object, Insert,OK之后,你会发现你的控件面板上多了一项ActiveMovieControl Object,将它选中,直接放在你的对话框上就行了。按Ctrl+W打开ClassWizard为它添加变量CActiveMovie3 m_ActiveMovie。各控件的布局如图:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  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,"Status:Repeat");
    }    
    else{
       isRepeat=FALSE;
       SetDlgItemText(IDC_STATIC2,"Status:Normal");
    }
}
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);
   }

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  5. 为使播放器具有Repeat功能,需在头文件MediaPlayerDlg.h 加入控制变量BOOL isRepeat;类型可为Private。同时修改OnInitDialog()函数: BOOL CMediaPlayerDlg::OnInitDialog()

{
    CDialog::OnInitDialog();
   
    isRepeat=FALSE;
    ……
}

  (注:第6步可以不做,只是按钮仍是方形按钮,而做了第6步后则为圆形的)

  6. 这样此播放器就具有一般的媒体播放功能了,但为了有更好的用户界面,我将按钮变成了圆形的。为此,要在工程里加入文件RoundButton.h以及RoundButton.cpp用CRoundButton来代替CButton。先打开类向导,为上述按钮添加对应变量。

CRoundButton m_FullScreen;
   CRoundButton m_Repeat;
   CRoundButton m_Upper;
   CRoundButton m_Lower;
   CRoundButton m_Close;
   CRoundButton m_Exit;
   CRoundButton m_Stop;
   CRoundButton m_Play;
   CRoundButton m_Pause;
   CRoundButton m_Open;
  (注:以上的个变量本来是Cbutton类型的,你要手动将他们改为CRoundButton,并在此头文件里加上#include "RoundButton.h"。)

  7. 好,现在可以编译、连接并运行了,直接按Ctrl+F5,OK便可以看自己的杰作了,打开个mp3文件听听,不错吧!如下图:

 

  作者信息:

  作者:王凯明

  联系地址:复旦大学0024信箱

  邮编:200433

  电话:021-65832369

  电子邮件:doose@etang.com

来源:https://www.tulaoshi.com/n/20160219/1626924.html

延伸阅读
近日朋友问在VC中如何控制flash文件,俺也没有做过以前,俺是新手再次声明,很菜的,嘿嘿,但俺也期望成为大侠,能够叱诧风云,仗剑行走江湖,路遇不平排忧解难,英雄美女,朝阳晚霞,青山绿水。。。哈,不好意思,写着写着就歪了。但恐怕所有Man都有过这个理想吧。  转入正题,嗯。。。对了,朋友有难不能不帮,况且还是位MM,哈。。。...
1. 在资源文件里选择插入,选择Custom,然后输入资源类型为24,不要输入其他的。 2. 将下面的XML代码拷入编辑器:  ?xml version="1.0" encoding="UTF-8" standalone="yes"?    assembly       xmlns="urn:schemas-microsoft-com:asm.v1"       manifestVersion="1...
GDI+图形函数,一个组在.net环境下提供的以取代GDI图形函数的类,将来会逐渐取代GDI图形函数. 如果在vc6.0中使用gdi+图形函数,那么请按以下步骤操作: 1.下载下面的rar文件将其中的Includes和Lib中的文件拷到vc目录下的Includes和Lib文件夹中. 2新建一个工程(以winsdk框架为例mfc也相同) 将以下代码加入StdAfx.h头文件中 //加入的头文件 #i...
Win7如何使用自带播放器播放本地媒体   1、点击开始按钮,在开始菜单中找到Windows Media Player后单击选择打开它; 2、在打开的界面中,展开左侧的音乐,找到你想要播放的媒体资料,然后双击它; 3、双击之后就会发现音乐已经由暂停标志,便转换成了播放的标志,这样就可以实现本地播放媒体了,很简单吧。  &...
最近做开发碰到了长字符串匹配、搜索的问题,最先想到的是使用正则表达式,简单、高效。 但是我用的开发工具是VC6.0,不支持正则表达式。 上网baidu一下,发现支持正则的库还真不少,大概有以下几种:boost,GNU,VC7带的ATL中的和微软发布的greta。 网上的朋友对boost评价不错,决定就使用是它了! 1、接下来的就是下载boost库,网上很好...

经验教程

163

收藏

57
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部