简单多媒体制作实验报告Word文件下载.docx

上传人:b****6 文档编号:20845188 上传时间:2023-01-26 格式:DOCX 页数:18 大小:510.25KB
下载 相关 举报
简单多媒体制作实验报告Word文件下载.docx_第1页
第1页 / 共18页
简单多媒体制作实验报告Word文件下载.docx_第2页
第2页 / 共18页
简单多媒体制作实验报告Word文件下载.docx_第3页
第3页 / 共18页
简单多媒体制作实验报告Word文件下载.docx_第4页
第4页 / 共18页
简单多媒体制作实验报告Word文件下载.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

简单多媒体制作实验报告Word文件下载.docx

《简单多媒体制作实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《简单多媒体制作实验报告Word文件下载.docx(18页珍藏版)》请在冰豆网上搜索。

简单多媒体制作实验报告Word文件下载.docx

C++6.0 

是Microsoft公司在1998年推出的基于Windows 

9X和Windows 

NT的优秀集成开发环境。

该环境为用户提供了良好的可视化编程环境,程序员可以里利用该开发环境轻松地访问C++源代码编辑器,资源编辑器和使用内部调试器,并且可以创建项目文件。

C++6.0不仅包括编译器,而且它还包括许多有用组件,通过这些组件的协同工作,可以在Visual 

C++6.0集成环境中轻松地完成创建源文件,编辑资源,以及对程序的编译,连接和调试等各项工作。

MFC(MicrosoftFoundationClass)是用来编写Windows应用程序的C++类集,其中封装了大部分WindowsAPI函数和Windows控件,使用MFC类库和VisualC++提供的高度可视的应用程序开发工具,可使应用程序开发变得简单,提高代码的可靠性和可重用性。

随着多媒体性能的极大提升,程序中经常要播放一段视频或者一段音频,如果能够简单地插入音频和视频,将极大缩短程序的开发时间。

本文基于MFC在VisualC++环境下利用WindowsMediaPlayer控件实现了音频视频文件的播放。

它的源程序按C++语言的要求编写,并加入了微软提供的功能强大的MFC(MicrosoftFoundationClass)类库。

MFC功能涉及到整个Windows操作系统。

MFC不仅给用户提供了Windows图形环境下应用程序的框架,而且还提供了创建应用程序的组件,这样,开发人员不必从头设计创建和管理一个标准Windows应用程序所需的程序,而是从一个比较高的起点编程,故节省了大量的时间。

另外,它提供了大量的代码,指导用户编程时实现某些技术和功能。

因此,使用VC++提供的高度可视化的应用程序开发工具和MFC类库,可使应用程序开发变得简单。

VC++6.0有很好的调试功能。

VC基于C,C++语言,主要由是MFC组成,是与系统联系非常紧密的编程工具,它兼有高级,和低级语言的双重性,功能强大,灵活,执行效率高,几乎可说VC在Windows平台无所不能。

四概要设计

列表模块:

显示歌曲。

打开模块:

打开目标文件,如音频、视频文件。

保存模块:

保存列表中的文件存储地址和文件名称。

播放模块:

播放音频、视频文件,播放列表。

关闭模块:

关闭播放器。

五多媒体设计过程

1模块实现函数说明

这些实现模块功能的具体函数均属于CMFCDlg类,它是在建立MediaPlayer工程时由MFC建立的一个对话框的类,在该对话框上进行的操作函数即可实现程序所需要的所有功能,其实现函数则是调用ActiveMovie控件的相关函数,从而完成各项具体功能。

各个模块的具体实现函数描述见下表所示:

模块名称

实现函数

列表模块

voidCMFCDlg:

:

Onlist()

打开模块

Onadd()

保存模块

Onsave()

播放模块

Onplay()

关闭模块

Onexit()

2界面设计

设计界面如下图所示,其中播放控制按钮有播放列表,添加文件,保存列表,播放文件,退出程序。

其他控件有WMPlayer和List1。

3播放列表

Onlist()

{

flag=!

flag;

if(!

flag)

{

SetWindowPos(NULL,0,0,480,340,SWP_NOMOVE);

}

else

SetWindowPos(NULL,0,0,680,340,SWP_NOMOVE);

}

函数注解:

BOOLSetWindowPos(HWNDhWnd,HWNDhWndInsertAfter,intx,inty,intcx,intcy,UINTnFlags);

函数作用:

 调用这个成员函数以改变子窗口、弹出窗口和顶层窗口的大小、位置和Z轴次序。

窗口在屏幕上按照它们的Z轴次序排序。

在Z轴次序上处于顶端的窗口将程序在所有其它窗口的顶部。

子窗口的所有坐标都是客户坐标(相对于父窗口客户区的左上角)。

窗口可以被移动到Z轴次序的顶部,既可以通过将pWndInsertAfter参数设为&

wndTopMost,并确保没有设置SWP_NOZORDER标志,也可以通过设置窗口的Z轴次序使它位于所有现存的顶层窗口上方。

当一个非顶层窗口被设为顶层窗口时,它拥有的窗口也被设为顶层的。

它的拥有者不发生变化。

如果顶层窗口被重新定位到Z轴次序的底部(&

wndBottom)或任何非顶层窗口之后,则它将不再是顶层窗口。

当顶层窗口被变为非顶层窗口时,它所有的拥有者和它拥有的所有窗口都被变为非顶层窗口。

参数作用:

pWndInsertAfter标识了在Z轴次序上位于这个CWnd对象之前的CWnd对象。

这个参数可以是指向CWnd对象的指针,也可以是指向其他值的指针。

x指定了窗口左边的新位置。

y指定了窗口顶部的新位置。

cx指定了窗口的新宽度。

cy指定了窗口的新高度。

nFlags指定了大小和位置选项。

当其值为SWP_NOMOVE表示保持当前的位置(忽略x和y参数)。

4添加文件

Onadd()

charszFileFilter[]="

媒体文件(*.avi,*.mp3,*.wma)|*.avi;

*.mp3;

*.wma;

|"

;

CFileDialogdlg(true,NULL,NULL,OFN_HIDEREADONLY|OFN_NOCHANGEDIR|OFN_ALLOWMULTISELECT,szFileFilter);

POSITIONpos=dlg.GetStartPosition();

if(dlg.DoModal()==IDOK)

while(pos!

=NULL)

m_pathname=dlg.GetNextPathName(pos);

m_list.AddString(m_pathname);

类注解:

CFileDialog类封装了Windows常用的文件对话框。

常用的文件对话框提供了一种简单的与Windows标准相一致的文件打开和文件存盘对话框功能。

可以用构造函数提供的方式使用CFileDialog,也可以从CFileDialog派生出自己的对话类并编写一个构造函数来适应你的需要。

每种情况下,对话框都与标准MFC对话框一样工作。

因为它们都是CCommonDialog类的派生类。

 

构造函数:

DoModal显示对话框并使用户可以进行选择。

初始化对话框控件后,调用DoModal成员函数显示对话框并使用户输入路径和文件。

DoModal返回不论是用户选择了OK(IDOK)还是取消(IDCANCEL)按钮。

GetNextPathName返回下一个选定文件的完整路径

GetStartPosition返回文件名列表的第一个元素位置

5保存列表

Onsave()

CStdioFilefile;

file.Open("

.\\list.txt"

CFile:

modeCreate|CFile:

modeReadWrite|CFile:

typeText);

//打开文件

for(inti=0;

i<

m_list.GetCount();

i++)

CStringstrtemp;

m_list.GetText(i,strtemp);

strtemp+="

\n"

//需要换行

file.WriteString(strtemp);

}//对文件进行写操作

file.Close();

//关闭文件

6播放文件

Onplay()

m_player.SetUrl(m_pathname);

(1)视频AVI格式

(2)Wma格式音乐

(3)MP3格式音乐

6退出程序

程序代码:

Onexit()

OnOK();

六心得体会

经过一个星期的努力,终于在所学习的MFC的基础上,设计制作一款小巧实用的多媒体播放器。

在课程设计过程中,虽然遇到了很多问题,但是经过反复查阅资料和不断尝试,以及和其他同学的讨论,最终顺利完成了设计工作,调试过后可以在要求的条件下完美运行。

当然,能力水平有限,所以播放器的功能不多,还不能播放更多格式比如rmvb,flv,wmv等格式的视频文件,但完全可以实现日常的媒体播放任务。

本次设计任务并不是很难,主要依据在互联网上找了一个关于制作简单音乐播放器的视频,通过跟随操作以快速熟悉相关控件、变量、函数等之间的关联。

幸好,WindowsMediaPlayer这一控件本身提供的操作函数很丰富,可以直接调用。

随着不断的学习,我对这一控件和这次设计的目标越来越熟悉,逐渐产生了一些想法,通过附加一些简单的命令语句,使软件更加的人性化,操作界面更加友好。

尽管如此,我觉得自己制作的多媒体播放器的可用性实在不佳,虽然能够实现基本功能,在程序结构方面应该还有很大的优化空间。

总之,通过自己的努力完成了本次设计工作,内心很有成就感,但是我也知道,我所做的设计都是拿别人的成果重新进行组建。

如果想要在软件方面有所发展,那还有很长的路要走。

同时我也明白了,想要把学习的知识变成自己的,就要在学习的过程中,不断的融入自己的思想,更加创新和人性化。

七参考文献

【1】黄维通,贾续涵.VisualC++面向对象与可视化程序设计[M].北京:

清华大学出版社,2011年

【2】梁普选.VisualC++程序设计与实践:

实验与指导[M].北京:

清华大学出版社,北京交通大学出版社,2007年

【3】CharlesPetzold著,方敏 译,清华大学出版社出版的《windows程序设计》

【4】刘雅琴,夏玉杰.基于MFC的多媒体播放器的实现[J].信息技术,2009,(03).

【5】龚月琴.多功能媒体播放器的设计与开发[J].福建电脑,2004,(07).

【6】.CharlesPetzold著,方敏 译,清华大学出版社出版的《windows程序设计》

八源代码 

#include"

stdafx.h"

MFC视频播放器.h"

MFC视频播放器Dlg.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

intflag;

CStringm_pathname;

/////////////////////////////////////////////////////////////////////////////

//CAboutDlgdialogusedforAppAbout

classCAboutDlg:

publicCDialog

public:

CAboutDlg();

//DialogData

//{{AFX_DATA(CAboutDlg)

enum{IDD=IDD_ABOUTBOX};

//}}AFX_DATA

//ClassWizardgeneratedvirtualfunctionoverrides

//{{AFX_VIRTUAL(CAboutDlg)

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);

//DDX/DDVsupport

//}}AFX_VIRTUAL

//Implementation

protected:

//{{AFX_MSG(CAboutDlg)

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

CAboutDlg:

CAboutDlg():

CDialog(CAboutDlg:

IDD)

//{{AFX_DATA_INIT(CAboutDlg)

//}}AFX_DATA_INIT

voidCAboutDlg:

DoDataExchange(CDataExchange*pDX)

CDialog:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CAboutDlg)

//}}AFX_DATA_MAP

BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)

//{{AFX_MSG_MAP(CAboutDlg)

//Nomessagehandlers

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

//CMFCDlgdialog

CMFCDlg:

CMFCDlg(CWnd*pParent/*=NULL*/)

:

CDialog(CMFCDlg:

IDD,pParent)

//{{AFX_DATA_INIT(CMFCDlg)

//NOTE:

theClassWizardwilladdmemberinitializationhere

//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32

m_hIcon=AfxGetApp()->

LoadIcon(IDI_ICON1);

//{{AFX_DATA_MAP(CMFCDlg)

DDX_Control(pDX,IDC_LIST1,m_list);

DDX_Control(pDX,IDC_OCX1,m_player);

BEGIN_MESSAGE_MAP(CMFCDlg,CDialog)

//{{AFX_MSG_MAP(CMFCDlg)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDC_list,Onlist)

ON_BN_CLICKED(IDC_add,Onadd)

ON_LBN_DBLCLK(IDC_LIST1,OnDblclkList1)

ON_BN_CLICKED(IDC_play,Onplay)

ON_BN_CLICKED(IDC_save,Onsave)

ON_BN_CLICKED(IDC_exit,Onexit)

//CMFCDlgmessagehandlers

BOOLCMFCDlg:

OnInitDialog()

OnInitDialog();

//Add"

About..."

menuitemtosystemmenu.

//IDM_ABOUTBOXmustbeinthesystemcommandrange.

ASSERT((IDM_ABOUTBOX&

0xFFF0)==IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX<

0xF000);

CMenu*pSysMenu=GetSystemMenu(FALSE);

if(pSysMenu!

=NULL)

CStringstrAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if(!

strAboutMenu.IsEmpty())

{

pSysMenu->

AppendMenu(MF_SEPARATOR);

AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);

}

//Settheiconforthisdialog.Theframeworkdoesthisautomatically

//whentheapplication'

smainwindowisnotadialog

SetIcon(m_hIcon,TRUE);

//Setbigicon

SetIcon(m_hIcon,FALSE);

//Setsmallicon

SetWindowPos(NULL,0,0,480,340,SWP_NOMOVE);

//无相对移动

m_list.SetHorizontalExtent(1000);

CStdioFile*fsp=new

CStdioFile("

modeRead);

CStringstrtemp;

while(fsp->

ReadString(strtemp))

m_list.AddString(strtemp);

fsp->

Close();

deletefsp;

//TODO:

Addextrainitializationhere

returnTRUE;

//returnTRUEunlessyousetthefocustoacontrol

OnSysCommand(UINTnID,LPARAMlParam)

if((nID&

0xFFF0)==IDM_ABOUTBOX)

CAboutDlgdlgAbout;

dlgAbout.DoModal();

else

CDialog:

OnSysCommand(nID,lParam);

//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow

//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,

//thisisautomaticallydoneforyoubytheframework.

OnPaint()

if(IsIconic())

CPaintDCdc(this);

//devicecontextforpainting

SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);

//Centericoninclientrectangle

intcxIcon=GetSystemMetrics(SM_CXICON);

intcyIcon=GetSystemMetrics(SM_CYICON);

CRectrect;

GetClientRect(&

rect);

intx=(rect.Width()-cxIcon+1)/2;

inty=(rect.Height()-cyIcon+1)/2;

//Drawtheicon

dc.DrawIcon(x,y,m_hIcon);

OnPaint();

//Thesystemcallsthistoobtainthecursortodisplaywhiletheuserdrags

//theminimizedwindow.

HCURSORCMFCDlg:

OnQueryDragIcon()

return(HCURSOR)m_hIcon;

*

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1