网络歌曲在线播放系统文档格式.docx

上传人:b****5 文档编号:19139567 上传时间:2023-01-04 格式:DOCX 页数:25 大小:125.67KB
下载 相关 举报
网络歌曲在线播放系统文档格式.docx_第1页
第1页 / 共25页
网络歌曲在线播放系统文档格式.docx_第2页
第2页 / 共25页
网络歌曲在线播放系统文档格式.docx_第3页
第3页 / 共25页
网络歌曲在线播放系统文档格式.docx_第4页
第4页 / 共25页
网络歌曲在线播放系统文档格式.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

网络歌曲在线播放系统文档格式.docx

《网络歌曲在线播放系统文档格式.docx》由会员分享,可在线阅读,更多相关《网络歌曲在线播放系统文档格式.docx(25页珍藏版)》请在冰豆网上搜索。

网络歌曲在线播放系统文档格式.docx

EXIT退出当前的MP3界面

在实现这些功能的时候,我将用到MCIWnd媒体控制接口。

MCIWnd是Windows95提供的基于MCI的窗口类。

MCIWnd并不属于MFC,因此在VC++中利用MCIWnd进行编程,首先应包含头文件VFW.H。

然后我们就可以利用MCIWnd窗口对象提供了可靠的方法对媒体播放进行控制。

首先在类的头文件中申明一些变量和函数

CStaticm_Status;

用来在静态的文本上显示文字

CButtonm_Play;

CButtonm_Pause;

CStringm_Path;

这个是用来表示获得文件的路径

afx_msgvoidOnExit();

afx_msgvoidOnStop();

afx_msgvoidOnPause();

afx_msgvoidOnPlay();

afx_msgvoidOnOpen();

HWNDm_Audio;

窗口句柄

BOOLPause;

实现Exit

思路是:

按Exit按纽的时候,如果窗口句柄存在就调用Destroy销毁窗口然后调用ONOK否则直接退出

HCURSORCMp3PlayerDlg:

:

OnQueryDragIcon()

{

return(HCURSOR)m_hIcon;

}

voidCMp3PlayerDlg:

OnExit()

if(m_Audio!

=NULL)

{

MCIWndDestroy(m_Audio);

OnOK();

}

CDialog:

OnCancel();

实现Stop

按Stop按纽的时候,在静态文本中显示SelectionStoped首先用MCIWndStop停止正在播放的文件,如果窗口句柄存在就调用Destroy销毁窗口。

再将窗口还原为有用,以至下次可以继续使用

OnStop()

MCIWndStop(m_Audio);

if(m_Audio!

m_Status.SetWindowText(_T("

SelectionStoped"

));

m_Play.EnableWindow(TRUE);

实现Pause

按Pause按纽的时候,在静态文本中显示SelectionPause

在暂停与播放间轮流的,实现的时候,先要判断之前的状态再选择的调用MCIWndResume,MCIWndPause

OnPause()

if(Pause)

m_Pause.SetWindowText("

Pause"

);

//m_Pause对应的控件的值

MCIWndResume(m_Audio);

//返回到你暂停的位置并重新开始

Pause=FALSE;

//设置Pause的值啊否则下次按Pause的时候会有问题

SelectionPaused"

else

MCIWndPause(m_Audio);

Pause=TRUE;

实现Play

按Play按纽的时候,在静态文本中显示Playing...

如果m_Audio为空就创建一个窗口否则退回文件开始处然后再调用MCIWndPlay来播放文件

设置好Pause和m_Play.EnableWindow的初值

OnPlay()

if(m_Audio==NULL)

m_Audio=MCIWndCreate(this->

GetSafeHwnd(),//获得父窗口

AfxGetInstanceHandle(),//获得当前实例句柄

WS_CHILD|WS_VISIBLE|MCIWNDF_NOMENU,//窗口样式

m_Path);

//m_Path文件路径

m_Status.SetWindowText(_T("

Playing..."

MCIWndHome(m_Audio);

}//

MCIWndPlay(m_Audio);

Pause=FALSE;

实现Open

CFileDialogmp3(TRUE,NULL,NULL,OFN_HIDEREADONLY,"

MP3Files(*.mp3)|*.mp3|"

这句话代表选择MP3文件。

然后通过函数获得文件路径,从而用可以用函数PLAY来播放

OnOpen()

m_Audio=NULL;

CFileDialogmp3(TRUE,NULL,NULL,OFN_HIDEREADONLY,"

//选择MP3文件

if(mp3.DoModal()==IDOK)

{

m_Path=mp3.GetPathName();

UpdateData(FALSE);

}//

}

(2)server和client界面

由于这两个界面是相连的来传输文件的,而且我们在教学的时候也是一起来教的,所以这两个界面一起来分析。

server界面

我做的SERVER界面只有一个功能就是选择要传输的文件,并和CLIENT相连

首先申明一个文件的结构体

typedefstruct_SOCKET_STREAM_FILE_INFO{

TCHARszFileTitle[128];

//文件的标题名

DWORDdwFileAttributes;

//文件的属性

FILETIMEftCreationTime;

//文件的创建时间

FILETIMEftLastAccessTime;

//文件的最后访问时间

FILETIMEftLastWriteTime;

//文件的最后修改时间

DWORDnFileSizeHigh;

//文件大小的高位双字

DWORDnFileSizeLow;

//文件大小的低位双字

DWORDdwReserved0;

//保留,为0

DWORDdwReserved1;

}SOCKET_STREAM_FILE_INFO,*PSOCKET_STREAM_FILE_INFO;

要用的

afx_msgvoidOnButtonLicsen();

实现发送文件

包括三部分,判断是否有要传输的文件,判断CLIENT端是否有要接受文件,发送文件

1.判断是否有要传输的文件,是通过PATH,看是否有文件的路径来寻找,若不存在则显示不存在,存在的话继续往下

CFilemyFile;

if(!

myFile.Open(Dlg.GetPathName(),CFile:

modeRead|CFile:

typeBinary))

AfxMessageBox("

文件不存在!

"

MB_OK|MB_ICONERROR);

return;

2.判断CLIENT端是否有要接受文件,

sockSrvr.Listen();

3.选择并发送文件

FindClose(FindFirstFile(Dlg.GetPathName(),&

FindFileData));

//释放FindFirst操作所申请的内存资源

memset(&

StreamFileInfo,0,sizeof(SOCKET_STREAM_FILE_INFO));

strcpy(StreamFileInfo.szFileTitle,myFile.GetFileTitle());

复制

StreamFileInfo.dwFileAttributes=FindFileData.dwFileAttributes;

StreamFileInfo.ftCreationTime=FindFileData.ftCreationTime;

StreamFileInfo.ftLastAccessTime=FindFileData.ftLastAccessTime;

StreamFileInfo.ftLastWriteTime=FindFileData.ftLastWriteTime;

StreamFileInfo.nFileSizeHigh=FindFileData.nFileSizeHigh;

StreamFileInfo.nFileSizeLow=FindFileData.nFileSizeLow;

sockRecv.Send(&

StreamFileInfo,sizeof(SOCKET_STREAM_FILE_INFO));

UINTdwRead=0;

while(dwRead<

StreamFileInfo.nFileSizeLow)

byte*data=newbyte[1024];

UINTdw=myFile.Read(data,1024);

sockRecv.Send(data,dw);

dwRead+=dw;

myFile.Close();

sockRecv.Close();

AfxMessageBox("

发送完毕!

CLIENT界面

我做的CLIENT界面,是将SERVER传输过来的文件保存在CLIENT的文件夹里面

首先和SERVER一样申明一个文件的结构体

还有

afx_msgvoidOnButtonSend();

afx_msgvoidOnChangeEditIpaddress();

实现通过地址来判断是否连接

添入文本数据后利用GetDlgItemText函数获取控件ID的文本,判断是否正确后,开始连接并接受

CStringszIpAddress;

GetDlgItemText(IDC_EDIT_IPADDRESS,szIpAddress);

if(szIpAddress.IsEmpty())

GetDlgItem(IDC_BUTTON_SEND)->

EnableWindow(FALSE);

EnableWindow(TRUE);

实现接受

包括两部分,判断是否连接,接受文件

1.判断是否连接

if(!

sockClient.Connect((LPCTSTR)szIP,800))

连接到对方机器失败!

2.接受文件

SOCKET_STREAM_FILE_INFOStreamFileInfo;

sockClient.Receive(&

CFiledestFile(StreamFileInfo.szFileTitle,CFile:

modeCreate|CFile:

modeWrite|CFile:

typeBinary);

UINTdwRead=0;

memset(data,0,1024);

UINTdw=sockClient.Receive(data,1024);

destFile.Write(data,dw);

SetFileTime((HANDLE)destFile.m_hFile,&

StreamFileInfo.ftCreationTime,

&

StreamFileInfo.ftLastAccessTime,&

StreamFileInfo.ftLastWriteTime);

destFile.Close();

SetFileAttributes(StreamFileInfo.szFileTitle,StreamFileInfo.dwFileAttributes);

sockClient.Close();

接收完毕!

五、运行结果

 

六、全部代码

MP3界面

//Mp3PlayerDlg.cpp:

implementationfile

//

#include"

stdafx.h"

Mp3Player.h"

Mp3PlayerDlg.h"

vfw.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

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

//CMp3PlayerDlgdialog

CMp3PlayerDlg:

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

:

CDialog(CMp3PlayerDlg:

IDD,pParent)

//{{AFX_DATA_INIT(CMp3PlayerDlg)

m_Path=_T("

//}}AFX_DATA_INIT

//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32

m_hIcon=AfxGetApp()->

LoadIcon(IDR_MAINFRAME);

DoDataExchange(CDataExchange*pDX)

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CMp3PlayerDlg)

DDX_Control(pDX,IDC_Status2,m_Status);

DDX_Control(pDX,ID_Play,m_Play);

DDX_Control(pDX,ID_Pause,m_Pause);

//}}AFX_DATA_MAP

BEGIN_MESSAGE_MAP(CMp3PlayerDlg,CDialog)

//{{AFX_MSG_MAP(CMp3PlayerDlg)

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(ID_Exit,OnExit)

ON_BN_CLICKED(ID_Stop,OnStop)

ON_BN_CLICKED(ID_Pause,OnPause)

ON_BN_CLICKED(ID_Play,OnPlay)

ON_BN_CLICKED(ID_Open,OnOpen)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

//CMp3PlayerDlgmessagehandlers

BOOLCMp3PlayerDlg:

OnInitDialog()

OnInitDialog();

//Settheiconforthisdialog.Theframeworkdoesthisautomatically

//whentheapplication'

smainwindowisnotadialog

SetIcon(m_hIcon,TRUE);

//Setbigicon

SetIcon(m_hIcon,FALSE);

//Setsmallicon

//TODO:

Addextrainitializationhere

returnTRUE;

//returnTRUEunlessyousetthefocustoacontrol

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

CDialog:

OnPaint();

//Thesystemcallsthistoobtainthecursortodisplaywhiletheuserdrags

//theminimizedwindow.

}//按关闭按纽的时候如果窗口句柄存在就调用Destroy销毁窗口然后调用ONOK否则直接退出

//设置Pau

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

当前位置:首页 > 法律文书 > 调解书

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

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