一1.docx

上传人:b****9 文档编号:25409693 上传时间:2023-06-08 格式:DOCX 页数:11 大小:248.21KB
下载 相关 举报
一1.docx_第1页
第1页 / 共11页
一1.docx_第2页
第2页 / 共11页
一1.docx_第3页
第3页 / 共11页
一1.docx_第4页
第4页 / 共11页
一1.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

一1.docx

《一1.docx》由会员分享,可在线阅读,更多相关《一1.docx(11页珍藏版)》请在冰豆网上搜索。

一1.docx

一1

多媒体播放器开发

本学期院里组织我们到东软进行了为期一周的实习,在实习期间我们以组为单位实现了一个MediaPlayer播放器功能。

我在此功能模块中实现的是设置循环功能,以下是实现的过程及结果。

一.播放器实现功能:

(1)简易播放界面,包括文件、关于。

其中文件的下拉菜单有打开、删除、退出。

(2)右键菜单及循环播放,全屏按钮的设置。

(3)右键菜单功能实现:

a.添加曲目

b.删除曲目

c.清空列表

(4)设置循环功能实现:

a.循环功能

b.播放歌曲,自动高亮

(5)设置全屏功能实现:

(6)主菜单选项实现:

a.打开

b.删除

c.退出

d.关于

(7)整合,测试

二.操作步骤:

本次实习我实现的是功能是(4),实现步骤如下:

选择View中的list,在控件中选择CheckBox,选择好后点击右键,选择Properties将ID名改为IDC_LOOP,在Caption的空白处添加“循环播放”,在Styles中选择Push-Like,

在控件中选择Button,点击右键选择Properties,将ID名改为IDC_FULL_SCREEN,在Caption的空白处添加“全屏”。

在编辑窗口中输入代码。

三.程序代码:

1.头文件代码如下:

//MediaPlayerDlg.cpp:

implementationfile

//

#include"stdafx.h"

#include"MediaPlayer.h"

#include"MediaPlayerDlg.h"

#include"wmpmedia.h"

#include"wmpplaylist.h"

#include"WMPControls.h"

#include"wmpsettings.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

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

//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)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

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

//CMediaPlayerDlgdialog

CMediaPlayerDlg:

:

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

:

CDialog(CMediaPlayerDlg:

:

IDD,pParent)

{

//{{AFX_DATA_INIT(CMediaPlayerDlg)

//}}AFX_DATA_INIT

//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32

m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

voidCMediaPlayerDlg:

:

DoDataExchange(CDataExchange*pDX)

{

CDialog:

:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CMediaPlayerDlg)

DDX_Control(pDX,IDC_LIST1,m_ItemList);

DDX_Control(pDX,IDC_PLAYER,m_player);

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CMediaPlayerDlg,CDialog)

//{{AFX_MSG_MAP(CMediaPlayerDlg)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_NOTIFY(NM_RCLICK,IDC_LIST1,OnRclickList1)

ON_COMMAND(ID_Add,OnAdd)

ON_COMMAND(ID_Clear,OnClear)

ON_COMMAND(ID_Delete,OnDelete)

ON_COMMAND(ID_ABOUT,OnAbout)

ON_BN_CLICKED(IDC_FULL_SCREEN,OnFullScreen)

ON_BN_CLICKED(IDC_LOOP,OnLoop)

ON_NOTIFY(NM_DBLCLK,IDC_LIST1,OnDblclkList1)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

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

//CMediaPlayerDlgmessagehandlers

BOOLCMediaPlayerDlg:

:

OnInitDialog()

{

CDialog:

:

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);

pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);

}

}

//Settheiconforthisdialog.Theframeworkdoesthisautomatically

//whentheapplication'smainwindowisnotadialog

SetIcon(m_hIcon,TRUE);//Setbigicon

SetIcon(m_hIcon,FALSE);//Setsmallicon

//TODO:

Addextrainitializationhere

((CButton*)GetDlgItem(IDC_LOOP))->SetCheck

(1);

m_player.GetSettings().setMode("loop",true);

returnTRUE;//returnTRUEunlessyousetthefocustoacontrol

}

voidCMediaPlayerDlg:

:

OnSysCommand(UINTnID,LPARAMlParam)

{

if((nID&0xFFF0)==IDM_ABOUTBOX)

{

CAboutDlgdlgAbout;

dlgAbout.DoModal();

}

else

{

CDialog:

:

OnSysCommand(nID,lParam);

}

}

//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow

//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,

//thisisautomaticallydoneforyoubytheframework.

voidCMediaPlayerDlg:

:

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);

}

else

{

CDialog:

:

OnPaint();

}

}

//Thesystemcallsthistoobtainthecursortodisplaywhiletheuserdrags

//theminimizedwindow.

HCURSORCMediaPlayerDlg:

:

OnQueryDragIcon()

{

return(HCURSOR)m_hIcon;

}

voidCMediaPlayerDlg:

:

OnRclickList1(NMHDR*pNMHDR,LRESULT*pResult)

{

//TODO:

Addyourcontrolnotificationhandlercodehere

CMenupopMenu;

popMenu.LoadMenu(IDR_CONTEXT);

CMenu*pSubMenu=popMenu.GetSubMenu(0);

POINTpt;

GetCursorPos(&pt);

pSubMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON,pt.x,pt.y,this);

*pResult=0;

}

2.循环播放代码如下:

voidCMediaPlayerDlg:

:

OnLoop()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

m_player.GetSettings().setMode("loop",((CButton*)GetDlgItem(IDC_LOOP))->GetCheck());

}

3.实现当前播放功能代码:

BEGIN_EVENTSINK_MAP(CMediaPlayerDlg,CDialog)

//{{AFX_EVENTSINK_MAP(CMediaPlayerDlg)

ON_EVENT(CMediaPlayerDlg,IDC_PLAYER,5806/*CurrentItemChange*/,OnCurrentItemChangePlayer,VTS_DISPATCH)

//}}AFX_EVENTSINK_MAP

END_EVENTSINK_MAP()

voidCMediaPlayerDlg:

:

OnCurrentItemChangePlayer(LPDISPATCHpdispMedia)

{

//TODO:

Addyourcontrolnotificationhandlercodehere

for(inti=0;i

{

m_ItemList.SetItemState(i,0,LVNI_SELECTED);

CWMPMediamedia=m_player.GetCurrentPlaylist().GetItem(i);

if(media.GetIsIdentical(m_player.GetCurrentMedia()))

{

m_ItemList.SetItemState(i,LVNI_SELECTED,LVNI_SELECTED);

}

}

}

4.实现双击播放歌曲代码:

voidCMediaPlayerDlg:

:

OnDblclkList1(NMHDR*pNMHDR,LRESULT*pResult)

{

//TODO:

Addyourcontrolnotificationhandlercodehere

intsel=m_ItemList.GetNextItem(-1,LVNI_SELECTED);

m_player.GetControls().playItem(m_player.GetCurrentPlaylist().GetItem(sel));

*pResult=0;

 

四.循环播放实现窗体:

5.实习心得

本次实习我们实现的是MediaPlayer播放器,我们是以组为单位来实现这一个功能。

我在此功能实现过程中实现的是循环播放部分的功能,这部分功能在实现时遇到很多问题,包括头文件的添加,以及代码的调试。

以前我们在学校也做过相关的C++的实验,但是在本次实验实现MediaPlayer播放器时,我们人遇到很多问题,首先,所使用的环境与以前在学校里所使用的有很大的不同,其次,在代码实现时由于代码具有的实际意义,在理解和实现上很困难。

但是,由于MediaPlayer播放器是一个具体的功能软件,在实现的过程中我们学到了很多知识。

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

当前位置:首页 > 求职职场 > 面试

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

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