bofangqi

更新时间:2023-03-20 23:58:07 阅读: 评论:0

投资外汇-打蜡

bofangqi
2023年3月21日发(作者:对学生的寄语)

目录

欧阳光明(2021.03.07)

多媒体视频播放器1

1基本功能描述1

2设计思路1

3软件设计2

3.1设计步骤3

3.2界面设计6

3.3关键功能的实现9

3.3.1“打开”功能的实现9

3.3.2“播放”、“暂停”、“停止”“全屏”功能的实现10

3.3.3“上一首”和“下一首”功能实现11

3.3.4音量滑动条功能的实现12

3.3.5播放列表功能的实现13

3.3.6进度滑动条功能的实现15

4结论与心得体会16

5参考文献17

6思考题17

7附录18

7.1调试报告18

7.1.1调试一18

7.1.2调试二19

7.2测试结果19

7.3关键源代码21

多媒体视频播放器

1基本功能描述

多媒体视频播放工具是目前计算机必备的一个软件,比较流行的有RealPlayer、

WindowsMediaPlayer以及国产暴风影音等,能够播放RM、RMVB、MP3、MPEG、

DAT等多种格式的视频文件mp3、wma、mdi、wav、avi、dat等格式的音频文件。

用VC++软件设计并编写出一个多媒体视频播放器。在设计期间,武松结局 可以选择使用的多

媒体控件,制作与用户交互性较好的应用程序界面。对于控件有多种,可以自己选择。本

次课程设计要使用VC++6.0内部的ActiveX控件——WindowsMediaPlayer控件,建立自

己的多媒体播放器。

此多媒体播放器具有打开文件、播放、暂停、停止、关闭、全屏、音量滑块调节、进

度滑块调节、快进、快退、显示隐藏播放列表等基本功能,可以播放*.mp3、*.wma、

*.mdi、*.wav、*.avi、*.dat、*.mpg、*.rmvb等格式的多媒体文件。同时还具有自制的

播放列表,可以按照列表上的顺序进行一曲、下一曲的播放。

2设计思路

WindowsMediaPlayer是一款Windows系统自带的播放器,支持通过插件增强功能。

其控件作为本次课设的媒体控件可以满足要求。并且该控件是微软自带的免费控件,通

常每个电脑都应有这个控件,方便设计出来的软件在各个电脑运行。

根据WindowsMediaPlayer和各个按钮控件功能的特点,首先要在初始化中对

CWMPControl,CWMPSettings,CWMPPlaylist,CWMPMedia等类的对象进行绑定和定

义。播放器的一些基本的功能如播放、暂停、全屏、静音、快进、快退等主要是调用

CWMPControl和CWMPPlayer类中的成员函数来进行实现。对于打开按钮,需要调用通

用文件对话框类,调用szFileFilter()文件过滤函数和GetFileName()获取文件名函数。

除了以上提到的功能的实现,还有进度滑条Slider_progress和音量滑动条Slider2是通

过对CSliderCtrl类实现的。

图1视频播放器流程图

3软件设计

设计平台可以是Win32的操作平台上,使用已安装的VC6.0++进行设计和调试。在设

初始化

点击“打开”选择文件

显示在中

双击列表框中内容或选中单击“播放”开始播放

点击“保

存列表”

删除列

打开程序

音量滑块50,新建,计时器开启

点击

“暂停/

点击

“停

点击

“下一

点击“快

进”

音量

调节

OnTimer

()

响应

CwnpCon

trol类中

的pau

函数和

play函数

响应

CwnpC

ontrol

类中的

stop函

intidex=当

前光标位

置加1,读

取idex中

文本,返

回SetUrl

函数

响应

CwnpCo

ntrol类

中的

fastForw

ard函数

获取位置

参数返回

响应

CwnpSetti

ng类中的

Setvolume

获取当前播

放位置返回

给进度条滑

块的SetPos

获取音量返

回SetPos

计前要确保平台中有WMP控件。结合之前的设计思路,使用WindowsMediaPlayer等控

件来制作多媒体视频播放器。若是Win64这与VC6.0++不兼容,可以选择更高的版本。

3.1设计步骤

打开VC++6.0,点击“新建”,在“新建”窗口选择“工程”选项卡。由于程序是基

对话框的MFC应用程序使用WindowsMediaPlayer等控件来制作多媒体视频播放器。设

置好地址位置和工程名后点“确定”。这里的工程名字可以是自己的名字拼音缩写,也

可以没有任何含义。

图2“新建”对话框示意图

在点击“确定”后进入到了“MFC应用程序向导—步骤1”的设置界面,选择“基本对话

框”,然后点击“下一步”。

图3“MFC应用程序向导”示意图

在剩下的3个步骤中,全部选择默认的设置,不要做随意更改,直至“完成”便实现了

对话框的创建。然后是插入控件,先把系统初始化的按钮用“Delete”删除,在单击鼠标

右键选择“插入ActiveX控件”,在跳出的对话框中选择“WindowsMediaPlayer”(一

般当电脑安装了WindowsMediaPlayer,其控件也应该存在),点击“确定”。

图4添加“WindowsMediaPlayer”控件示意图

虽然已经插入控件了,但这时的控件还不能使用,因为控件的各种类并没有一起加入

工程类中。右击鼠标,选择“建立类向导……”,这时系统跳出对话框提示是否加入来

自控件的类,直接点击“确定”就可以了。

图5“WindowsMediaPlayer”控件类添加示意图

接着对控件关联变量,右击加入的WMP控件,点击“属性”,把ID改为

“IDC_player”,然后打开“建立类向导……”点到“MemberVariables”页面向

IDC_player添加变量。单击“ADDVariables”,会弹出图6所示的“Addmembername”

对话框,命名为“m_player”,设为控制“Control”型,点击“OK”。

图6变量命名示意图

关联变量之后才算是真正的添加了该控件,可以发现在关联变量之后,控件工具栏多

了“WindowsMediaPlayer”控件的选项,并且在“SourceFiles”中增加了17个类,相应

的头文件也增加了17个,其中最主要的类为Cwmpplayer4,Cwmpcontrols,

Cwmpmedia,Cwmpttings四个大类。

Cwmpplayer4类主要是关于对其他类的对象的调用以及基本的控件功能的实现,提供

了与WindowsMediaPlayer控件进行交迎难而上近义词 互的基本方法,其中部分成员函数还能够进一步获

取得到其他相关类对象的实例;Cwmpcontrols类主要是对控件的更多的操作;

Cwmpmedia类主要是对于媒体文件资源的一些操作;Cwmpttin新冠变种 gs类主要是对于媒体文

件中的一些基本设置的操作。

3.2界面设计

首先是打开按钮,用于媒体文件的打开;然后依次是播放、暂停、停止、快进、快

退、静音、全屏、退出、上一首、下一首、显示/隐藏按钮,以及视频进度滑块和音量滑

块条Slider控件。对控件主要进行变量的关联,以及ID的修改,对于普通按钮进行ID修

改,结果如下下表1、表2、表3和表4所示。

表1控件ID以及对应响应函数表

按钮ID控件Caption消息响应函数类型

IDC_BUTTON_open打开OnBUTTONopen()命令按钮

IDC_BUTTON_fullscreen全屏OnBUTTONfullscreen()命令按钮

IDC_BUTTON_play播放OnBUTTONplay()命令按钮

IDC_BUTTON_pan暂停/播放OnBUTTONpan()命令按钮

IDC_BUTTON_stop停止OnBUTTONstop()命令按钮

IDC_BUTTON_fastforward快进OnBUTTONFastforward()命令按钮

IDC_BUTTON_fastever快退OnBUTTONfastever()命令按钮

IDC_BUTTON_pre上一曲OnBUTTONpre()命令按钮

IDC_BUTTON_next下一曲OnBUTTONnext()命令按钮

IDC_BUTTON4_mute静音OnBUTTON4mute()命令按钮

IDCANCEL退出无命令按钮

IDC_BUTTON_show隐藏/展开OnBUTTONshow()命令按钮

IDC_BUTTON_save保存列表OnBUTTONsave()命令按钮

IDC_BUTTON_clear删除列表OnBUTTONclear()命令按钮

然后是加入一些关联变量的控件,之前加入了WMPlayer,还要加入类别为“滑块”

的Slider来当调节声音的滑块,还有加入类别为“列表框”的ListControl来充当播放列

表。

表2控件ID以及关联变量表

按钮ID控件Caption变量名称类型

IDC_OCX1WMPlayerm_playerCWMPlayer4

IDC_SLIDER_progressSliderm_jinduCSliderCtrl

IDC_SLIDER_volSliderm_volCSliderCtrl

IDC_LIST_MENUListControlm_list2CListBox

在按钮对应的消息响应函数中写程序将要用到表2的变量和WMP控件中的5个类的

函数。

在这五个类中:Cwmpplayer4类主要是关于对其他类的对象的调用以及基本的控件功

能的实现,是WMP控件函数与外部交流的桥梁,不可缺少。宁外其部分成员函数还能够

进一步获取得到其他相关类对象的实例;Cwmpcontrols类主要是对控件的更多的操作,

例如播放、暂停;Cwmpmedia类主要是对于媒体文件资源的一些操作,例如获取路径和

名称;Cwmpplaylist类主要是关于播放列表的操作;Cwmpttings类主要是对于媒体文件

中的一些基本设置的操作。

表3其他类及对应对象表

表4其他数据定义

数据类型变量名数据类型变量名

CStringm_FileNameBOOLflag,flag2,n

CStringm_PathNameintvol

除了对各个控件关联变量以及消息响应函数,还要对对话框类进行消息响应函数的关

类名头文件名对象名

_Control

_Setting

_Media

_Playlist

联,如当一首歌播放完后的模式选择。应用到WM_TIMER消息响应函数以及SetTimer()

和KillTimer()函数,如图建立OnTimer函数。

图7添加“WM_TIMER”消息函数示意图

还有菜单的设计,其相对简单,只要名称和ID与表1保持一致就可以了。在

“ResourceFile”中右击鼠标添加“MENU”,属性为“IDR_MENU1”。但是菜单并未

与对话窗口有实质联系,需要将菜单加入到“IDD_SHIFAN_DIALOG”中来,在

“IDD_SHIFAN_DIALOG”窗口空白右键单击,选中菜单“IDR_MENU1”,这样便完成

了对菜单的加载。

图8控件按钮分布图

编译运行程序后得到了初步的界面效果图,当然还没有加入新年快乐作文 函数。同时在左上角会显

示自己写的工程名“YLJ_Media_Player”,如图8所示。

3.3关键功能的实现

对于各个按钮、列表功能的实现主要是通过对各个函数加入相应的代码,下文将列出

相应的关键代码。

3.3.1“打开”功能的实现

“打开”按钮主要是实现了对打开的文件进行过滤,主要使用了szFileFilter()函数。点击

确定时,首先是把文件路径传给播放列表中,列表在从文件路径中提取文件名来显示。

然后又把文件路径通过SetUrl()交给控件读取播放。

voidCYLJ_Media_PlayerDlg::O花巨兔 nBUTTONopen()

{

charszFileFilter[]="所有支持类型

|*.mp3;*.mp4;*.wma;*.dat;*.wav;*.avi;*.mov;*.rmvb;*.mmm;*.mid;*.rmi;*.mpeg;*.mpg|"

"Mp3File(*.mp3)|*.mp3|"

"Mp4File(*.mp4)|*.mp4|"

"WmaFile(*.wma)|*.wma|"

"VideoFile(*.dat)|*.dat|"

"WaveFile(*.wav)|*.wav|"

"AVIFile(*.avi)|*.avi|"

"MovieFile(*.mov)|*.mov|"

"RmvbFile(*.rmvb)|*.rmvb|"

"MediaFile(*.mmm)|*.mmm|"

"MidFile(*.mid;*,rmi)|*.mid;*.rmi|"

"MPEGFile(*.mpeg)|*.mpeg|"

"MPGFile(*.mpg)|*.mpg|"

"AllFile(*.*)|*.*||";//文件类型过滤

CFileDialogdlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter);

POSITIONpos=rtPosition();

if(l()==IDOK)

{while(pos!=NULL)

{

m_PathName=tPathName(pos);

m_ing(m_PathName);

}

}

}

3.3.2“播放”、“暂停”、“停止”“全屏”功能的实现

其实和3.3.1中提到一种播放方法一样使用了SetUrl()函数来实现。

voidCYLJ_Media_Player鼓掌英文 Dlg::OnBUTTONplay()

{

CStringstr;

intindex=m_Sel();

m_t(index,str);

m_(str);

}

“暂停”和“停止”功能实现方法和播放差不多,只是使用的m_trols()

中函数改变了。

voidCYLJ_Media_PlayerDlg::OnBUTTONpan()

{

flag2=!flag2;

if(flag2){

m_trols().pau();

}

el{

m_trols().play();

}

}

voidCYLJ_Media_PlayerDlg::OnBUTTONstop()

{

m_trols().stop();

}

全屏功能的实现也是调用SetFullScreen(TRUE)函数来实现。

voidCYLJ_Media_PlayerDlg::OnBUTTONfullscreen()

{

m_lScreen(TRUE);

}

3.3.3“上一首”和“下一首”功能实现

“上一首”就是让光标往上移一行,也就是对应的光标变量(index)减去1。当要判

断光标在第一行的情况,也就是index=0的时候,这时光标应移到最后一首歌曲或视频

上。

voidCYLJ_Media_PlayerDlg::OnBUTTONpre()

{

CStringstr;

intindex=m_Sel()-1;//光标减一

if(index<0)index=m_nt()-1;//如果播放完第一曲就自动播放最后一首

m_t(index,str);//获得当前光标所指的路径字符串

m_(str);//开始播放上一首

m_Sel(index);//自动置光标

}

其“下一首”和“上一首”大同小异,只不过index应加1,在光标为最后一行时应

判断移动到第一行。

voidCYLJ_Media_PlayerDlg::OnBUTTONnext()

{

CStringstr;

intindex=m_Sel()+1;//光标加一

if(index>=m_nt())index=0;//如果播放完最后一曲就自动播放第一首

m_t(index,str);//获得当前光标所指的路径字符串

m_(str);//开始播放下一首

m_Sel(index);//自动置光标

}

3.3.4音量滑动条功能的实现

音量滑动条是区别于其他命令按钮的,它是滑块,是调用CSliderCtrl控件的m_vol变

量来实现的。音量调节函数主要是使用一个嵌套函数

“m_tings().SetVolume(100-m_());”实现的。设置音量用的是

“SetVolume()”函数。在“OnInitDialog()”函数中已对滑块范围进行初始化——

CSliderCtrl*pSlide1=(CSliderCtrl*)GetDlgItem(IDC_SLIDER1);pSlide1->SetRange(0,100);

使音量变化范围为0~100。

voidCYLJ_Media_PlayerDlg::OnReleadcaptureSlider1(NMHDR*pNMHDR,

LRESULT*pResult)

{

m_tings().SetVolume(100-m_());

*pResult=0;

}

另外静音程序如下,在静音按钮按下后把系统音量保存在vol中,等恢复时使用,再

设置为静音,再次按下后取消静音然后恢复开始音量。

voidCYLJ_Media_PlayerDlg::OnBUTTON4mute()

{

n=!n;

if(n)

{

vol=m_tings().GetVolume();//获取当前音量值

m_tings().SetMute(TRUE);//设为静音

}

el

{

m_tings().SetMute(FALSE);//解除静音

m_tings().SetVolume(vol);//恢复当前音量值

}

}

3.3.5播放列表功能的实现

播放列表主要有“隐藏/展开”、“保存列表”、“清空列表”这三个功能。

这个列表的三个功能实现前提第一次运行程序时会在E盘新建一个txt文档并命名为

“”。初始化函数如下:

CStdioFile*fsp=newCStdioFile("E:",CFile::modeRead);

CStringstr;

while(fsp->ReadString(str))

{

m_ing(str);

}

fsp->Clo();

deletefsp;

文档可以保存播放文件列表使在下次打开时可自动的生成播放列表。下面是“保存列

表”的函数。

voidCYLJ_Media_PlayerDlg::OnBUTTONsave()

{

//TODO:Addyourcontrolnotificationhandlercodehere

CStdioFilefile;

CStringstrtemp;

("E:",CFile::modeCreate|CFile::modeReadWrite|CFile::typeText);

for(inti=0;i

{

CStringstrtemp;

m_t(i,strtemp);

strtemp+="n";//换行

tring(strtemp);

}

();

}

然后是“清除列表”功能,用“RetContent()”直接清除列表。

voidCYLJ_Media_PlayerDlg::OnBUTTONclear()

{

CStdioFilefile;

m_ontent();

("E:",CFile::modeCreate);

();

}

最后是“显示/隐藏”功能,其实就是在重新设置窗口大小,若展开则恢复原来的窗

口大小,这里使用了SetWindowPos()函数。

voidCYLJ_Media_PlayerDlg::OnBUTTONshow()

{

flag=!flag;

if(flag)SetWindowPos(NULL,0,0,500,520,SWP_NOMOVE);

elSetWindowPos(NULL,0,0,702,520,SWP_NOMOVE);

}

3.3.6进度滑动条功能的实现

进度条可以时时显示播放的位置,而视频进度滑块的初始化放在OnHScroll()函数中

实现。

voidCYLJ_Media_PlayerDlg::OnHScroll(UINTnSBCode,UINTnPos,CScrollBar*

pScrollBar)

{

intm_time;

m_time=(int)m_rentMedia().GetDuration();

m_ge(0,m_time);//初始化视频进度滑块

intNewPos;

if((CSliderCtrl*)pScrollBar==&m_jindu)

{

switch(nSBCode)

{

caSB_THUMBTRACK:

m_(nPos);

m_trols().SetCurrentPosition((double)nPos);

break;

caSB_PAGEDOWN:

NewPos=m_();

m_trols().SetCurrentPosition((double)NewPos);

break;

caSB_PAGEUP:

NewPos=m_();

m_trols().SetCurrentPosition((double)NewPos);

break;

}

}

视频进度的控制主要是SB_THUMBTRACK、SB_PAGEDOWN、SB_PAGEUP,三个

消息响应即移动滑块、单击滑块右边滑条、单击滑块左边滑条的消息响应来实现视频进

度的控制。

4结论与心得体会

平时我挺喜欢听歌看电影的,当看到老师给的选题中有多媒体视频播放器这个题目,

我开始是还是挺激动的,能够自己做一个简单的程序,满足自己的爱好也是挺有成就感

的。

在一开始选这个课题时,我和其他同学都觉得很难。不像简单计算器和画图软件等课

题曾在上课提到过,对于多媒体播放器我看到看到了题目不知道该怎样做。然后我花了

大量时间去了解第一步怎么做,分别查找了各个控件基本用法功能,最后选用了

WindowsMediaPlayer控件,因为我vc中只能找到这个与视频有关的控件,于是在网上

查了一些关于WindowsMediaPlayer控件的资料,结果按照网上说的方法来根本无法实

现,因为网上都说要先插入17个WindowsMediaPlayer控件相关的类,但是我vc却不照

网上那样实现,所以在头两天是在摸索中,耗费了很多时间,最后我先不管第一步,直

接插入控件,然后发现关联变量时会有提示要插入17个类,点确定就行,问题就这么解

决了。

然后我和同组的同学在网上找相应的资料,找到怎样在VC++6.0里加入控件,各个控

件的说明书。进过比较和分析,我们一致采用WindowsMediaPlayer多媒体软件旗下的控

件WMP控件。因为WMP控件本身就是微软自带的控件,不存在兼容问题。还有每个电

脑多都有WindowsMediaPlayer播放器,其控件也都注册了。

知道怎样使用WMP控件,就可以很轻松地完成软件流程图的设计。我结合了自己在

网上搜索的资料,做好了整个多媒体播放器的整体设计,确定了软件的框架、主要构件

以及构件之间的关联,而后由总体设计逐渐深入完成软件的详细设计和开发过程。编写

代码更加有条理,才会更加符合软件工程的标准。整个程序设计我做了两天,每天熬夜

到1点多,也学会了不少东西。

最后终于变好了,编写的软件可以满足课程设计给出的要求。系统能选择打开、播

放、暂停、停止音频文件和视频文件,并能控制声音的大小,可以播放*.mp3、*.wma、

*.mdi、*.wav、*avi、*dat等格式的多媒体文件。看到点击每一个按钮都能有相应的反

应,顿时有了一种莫名的成就感,也感觉到自己的汗水得到了回报。

纸上得来终觉浅,绝知此事要躬行。要想完成一项作品,并不是想的那样简单,做

起来总是会遇到问题的,这时就需要要解决问题的能力和坚持不懈的决心。通过本次

试验,我收获了很多,对面向对象程序设计这门课所学的知识有了更好的理解。书山

有路勤为径,学海无涯苦作舟。

5参考文献

[1]揣锦华.面向对象程序设计与VC++实践[M].西安电子科技大学出版社.2005

[2]郑阿奇.VisualC++教程[M].北京:机械工业出版社.2004

[3]周长发.VisualC++.NET多媒体编程[M].电子工业出版社.2002

[4]SteveMack.流媒体宝典.电子工业出版社.2003

[5]王育坚.VisualC++面向对象编程教程.第2版.北京:清华大学出版社,2008

6思考题

1)控件自带的类和本程序中的类是如何共同作用的?

答:控件自带的的类肯定会在对话框的主程序中被调用,那么就要在主程序中

#include入对应类的头文件。对需要用到的类生成对应的对象以实现类中函数的使用。

调用了控件类中的函数后,还需要调用对话框自身的函数,比如消息及消息响应函数

等函数,以及各控件对应的消息响应函数。如此便可以实现控件自带类和本程序中的类

的共同作用。

2)说明程序中调用的控件函数的作用?

答:控件的不同类有不同的函数与之对应,不同函数有不同的功能。其函数功能见

表。

表5控件函数和对应的功能

功能控件函数功能控件函数

打开OnBUTTONopen()进度刷新OnTimer()

播放OnBUTTONplay()停止OnBUTTONstop()

暂停OnBUTTONpau()上一首OnBUTTONpre()

快进OnBUTTONFastforward下一首OnBUTTONnext()

快退OnBUTTONFastrever()保存列表OnBUTTONsave()

声音滑块OnReleadcaptureSlider1()清空列表OnBUTTONclear()

全屏OnBUTTONfullscreen()进度控制OnHScroll()

7附录

7.1调试报告

7.1.1调试一

运行时错误指明如下如图所示:

图9调试一错误提示

错误提示为:uofundefinedtype'CWMPControls'。在这行代码中,我用控件变量

m_player调用GetControls()函数来获得CWMPControls类的对象以调用该的成员函数

pau()函数宿命电影 ,根据错误提示可知,我这行代码是写在视图类中,调用pau()属于类外调

用,但是该类不认识CWMPControls类,所以要在视图类的最前面要加个头文件#include

"wmpcontrols.h"。

7.1.2调试二

在调试播放列表时,看到播放列表中显示了路径感觉没有必要,所以修改了代码使只

把歌曲名给了代码。但这样再来播放列表上的歌曲时不能播放。

图10调试二的说明图

原因:是因为播放列表上只有歌曲名,没了路径的话是不能找到文件的,所以不能播

放。所以解决方法是修改代码使其把歌曲路径递给播放列表。但后来听老师的解说,可

以通过取字符串函数来从路径里取文件名。即播放列表中储存的是路径,但显示的是路

径中文件名。

7.2测试结果

编写好的软件能选择打开、播放、暂停、停止音频文件和视频文件,并能控制声音的

大小,以及播放的进度,可以播放*.mp3、*.wma、*.mdi、*.wav、*avi、*dat等格式的

多媒体文件。同时还具有自制的播放列表,可以按照列表上的顺序进行一曲、下一曲的

播放,同时还有4月22日是什么节日 保存列表和删除歌曲的作用。

图11播放器播放音乐展示

图12播放器隐藏列表展示

7.3关键源代码

voidCYLJ_Media_PlayerDlg::OnBUTTONopen()

{

charszFileFilter[]=

"所有支持类型

|*.mp3;*.mp4;*.wma;*.dat;*.wav;*.avi;*.mov;*.rmvb;*.mmm;*.mid;*.rmi;*.mpeg;*.mpg|"

"Mp3File(*.mp3)|*.mp3|"

"Mp4File(*.mp4)|*.mp4|"

"WmaFile(*.wma)|*.wma|"

"VideoFile(*.dat)|*.dat|"

"WaveFile(*.wav)|*.wav|"

"AVIFile(*.avi)|*.avi|"

"MovieFile(*.mov)|*.mov|"

"RmvbFile(*.rmvb)|*.rmvb|"

"MediaFile(*.mmm)|*.mmm|"

"MidFile(*.mid;*,rmi)|*.mid;*.rmi|"

"MPEGFile(*.mpeg)|*.mpeg|"

"MPGFile(*.mpg)|*.mpg|"

"AllFile(*.*)|*.*||";//文件类型过滤

CFileDialogdlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter);

POSITIONpos=rtPosition();

if(l()==IDOK)

{while(pos!=NULL){

m_PathName=tPathName(pos);

m_ing(m_PathName);

}

}

}

voidCYLJ_Media_PlayerDlg::OnBUTTONpan()

{

flag2=!flag2;

if(flag2){

m_trols().pau();

}

el{

m_trols().play();

}

}

voidCYLJ_Media_PlayerDlg::OnBUTTONplay()

{

CStringstr;

intindex=m_Sel();

m_t(index,str);

m_(str);

}

voidCYLJ_Media_PlayerDlg::OnBUTTON4mute()

{

n=!n;

if(n)

{

vol=m_tings().GetVolume();//获取当前音量值

m_tings().SetMute(TRUE);//设为静音

}

el

{

m_tings().SetMute(FALSE);//解除静音

m_tings().SetVolume(vol);//恢复当前音量值

}

}

voidCYLJ_Media_PlayerDlg::OnBUTTONpre()

{

CStringstr;

intindex=m_Sel()-1;//光标减一

if(index<0)index=m_nt()-1;//如果播放完第一曲就自动播放最后一首

m_t(index,str);//获得当前光标所指的路径字符串

m_(str);//开始播放上一首

m_Sel(index);//自动置光标

}

voidCYLJ_Media_PlayerDlg::OnBUTTONnext()

{

CStringstr;

intindex=m_Sel()+1;//光标加一

if(index>=m_nt())index=0;//如果播放完最后一曲就自动播放第一首

m_t(index,str);//获得当前光标所指的路径字符串

m_(str);//开始播放下一首

m_Sel(index);//自动置光标

}

voidCYLJ_Me离职通知 dia_PlayerDlg::OnBUTTONshow()

{

flag=!flag;

if(flag)SetWindowPos(NULL,0,0,500,520,SWP_NOMOVE);

elSetWindowPos(NULL,0,0,702,520,SWP_NOMOVE);

}

voidCYLJ_Media_PlayerDlg::OnDblclkListMenu()

{

CStringstr;

intindex=m_Sel();

m_t(index,str);

m_(str);

m_PathName=str;

}

voidCYLJ_Media_PlayerDlg::OnBUTTONsave()

{

CStdioFilefile;

CStringstrtemp;

("E:",CFile::modeCreate|CFile::modeReadWrite|CFile::typeText);

for(inti=0;i

{

CStringstrtemp;

m_t(i,strtemp);

strtemp+="n";//换行

tring(strtemp);

}

();

}

voidCYLJ_Media_PlayerDlg::OnBUTTONclear()

{

CStdioFilefile;

m_ontent();

("E:",CFile::modeCreate);

}

voidCYLJ_Media_PlayerDlg::OnReleadcaptureSlider1(NMHDR*pNMHDR,LRESULT*

pResult)

{

m_tings().SetVolume(100-m_());

*pResult=0;

}

voidCYLJ_Media_PlayerDlg::OnHScroll(UINTnSBCode,UINTnPos,CScrollBar*pScrollBar)

{

intm_time;

m_time=(int)m_rentMedia().GetDuration();

m_ge(0,m_time);//初始化视频进度滑块

intNewPos;

if((CSliderCtrl*)pScrollBar==&m_jindu)

{

switch(nSBCode)

{

caSB_THUMBTRACK:

m_(nPos);

m_trols().SetCurrentPosition((double)nPos);

break;

caSB_PAGEDOWN:

NewPos=m_();

m_trols().SetCurrentPosition((double)NewPos);

break;

caSB_PAGEUP:

NewPos=m_();

m_trols().SetCurrentPosition((double)NewPos);

break;

}

}

CDialog::OnHScroll(nSBCode,nPos,pScrollBar);

}

voidCYLJ_Media_PlayerDlg::OnTimer(UINTnIDEvent)

{

m_((int)m_trols().GetCurrentPosition());

m_(100-(in科技论文格式范文 t)m_tings().GetVolume());

CDialog::OnTimer(nIDEvent);

}

voidCYLJ_Media_PlayerDlg::OnHelp()

{

CDialogdlg(CAboutDlg::IDD);

l();

}

本文发布于:2023-03-20 23:58:05,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/1679327887324144.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:bofangqi.doc

本文 PDF 下载地址:bofangqi.pdf

上一篇:内存储器
下一篇:返回列表
标签:bofangqi
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
  • bofangqi
    投资外汇-打蜡2023年3月21日发(作者:对学生的寄语)目录欧阳光明(2021.03.07)多媒体视频播放器11基本功能描述12设计思路13软件设计23.1设计步骤33.2界面设计63.3关键功能的实现93.3.1“打开”功能的实现93.3.2“播放”、“暂停”、“停止”“全屏”功能的实现103.3.3“上一首”和“下一首”功能实现113.3.4音量滑动条功能的实现123.3.5播放列表功能的实
  • 0℃内存储器
  • 0℃化验员岗位职责
  • 0℃染衣服
  • 0℃焦距范围
  • 0℃恐怖星球下载
  • 0℃超市打折
  • 0℃车灯符号
  • 0℃剑兰
  • 0℃beck公羊
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图