用MFC做MP3音乐播放器超实用Word文档格式.docx

上传人:b****6 文档编号:20220261 上传时间:2023-01-20 格式:DOCX 页数:36 大小:485.10KB
下载 相关 举报
用MFC做MP3音乐播放器超实用Word文档格式.docx_第1页
第1页 / 共36页
用MFC做MP3音乐播放器超实用Word文档格式.docx_第2页
第2页 / 共36页
用MFC做MP3音乐播放器超实用Word文档格式.docx_第3页
第3页 / 共36页
用MFC做MP3音乐播放器超实用Word文档格式.docx_第4页
第4页 / 共36页
用MFC做MP3音乐播放器超实用Word文档格式.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

用MFC做MP3音乐播放器超实用Word文档格式.docx

《用MFC做MP3音乐播放器超实用Word文档格式.docx》由会员分享,可在线阅读,更多相关《用MFC做MP3音乐播放器超实用Word文档格式.docx(36页珍藏版)》请在冰豆网上搜索。

用MFC做MP3音乐播放器超实用Word文档格式.docx

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

//Drawtheicon

dc.DrawIcon(x,y,m_hIcon);

}

else

//CDialog:

OnPaint();

CDCdcMem;

dcMem.CreateCompatibleDC(&

dc);

CBitmapbmpBackground;

bmpBackground.LoadBitmap(IDB_BITMAP6);

/IDB_BITMAP6是你的位图地址

BITMAPbitmap;

bmpBackground.GetBitmap(&

bitmap);

CBitmap*pbmpOld=dcMem.SelectObject(&

bmpBackground);

dc.StretchBlt(0,0,rect.Width(),rect.Height(),&

dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);

}

编译运行,你就会看到背景有图片了。

插入-类,找到geneticclass,类名mp3.cpp

你会发现在头文件中多了一个mp3.h文件

在mp3.h文件中添加代码如下

//Mp3.h:

interfacefortheMp3class.

//

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

#if!

defined(AFX_MP3_H__20D325E5_A96A_43FE_A485_92F57C68DD0D__INCLUDED_)

#defineAFX_MP3_H__20D325E5_A96A_43FE_A485_92F57C68DD0D__INCLUDED_

#if_MSC_VER>

1000

#pragmaonce

#endif//_MSC_VER>

#include"

Mmsystem.h"

classMp3

public:

Mp3();

virtual~Mp3();

HWNDm_hWnd;

//¼

Ç

Â

¼

µ

±

°

´

¿

Ú

Ä

¾

ä

ú

DWORDDeviceID;

//Ö

¸

¨

²

¥

·

Å

Ò

ô

À

Ö

É

è

ID

MCI_OPEN_PARMSmciopenparms;

//Ö

ò

ª

Î

þ

Ê

ý

voidLoad(HWNDhwnd,CStringStrfilepath);

DWORDgetinformation(DWORDitem);

voidPlay();

voidPause();

voidresum();

voidStop();

};

#endif//!

在mp3.cpp中添加如下代码

//Mp3.cpp:

implementationoftheMp3class.

stdafx.h"

Mp3²

Æ

÷

.h"

Mp3.h"

#ifdef_DEBUG

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#definenewDEBUG_NEW

#endif

//Construction/Destruction

Mp3:

Mp3()

~Mp3()

voidMp3:

Load(HWNDhwnd,CStringStrfilepath)

m_hWnd=hwnd;

mciSendCommand(DeviceID,MCI_CLOSE,0,0);

Ó

Ô

Ø

Ï

È

å

³

Ã

mciopenparms.lpstrElementName=Strfilepath;

//½

«

ø

DWORDdwReturn;

if(dwReturn=mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_ELEMENT|MCI_WAIT,(DWORD)(LPVOID)&

mciopenparms))

//È

ç

¹

û

§

Ü

£

¬

½

ö

í

Ð

¢

æ

buffer²

¯

charbuffer[256];

mciGetErrorString(dwReturn,buffer,256);

MessageBox(hwnd,buffer,"

"

MB_ICONHAND|MB_ICONERROR|MB_ICONSTOP);

DeviceID=mciopenparms.wDeviceID;

//¶

à

Ì

Í

º

DWORDMp3:

getinformation(DWORDitem)

//MCI½

ó

×

MCI_STATUS_PARMSmcistatusparms;

//´

»

ñ

¡

î

mcistatusparms.dwItem=item;

mcistatusparms.dwReturn=0;

//Ï

ë

Ë

Á

mciSendCommand(DeviceID,MCI_STATUS,MCI_STATUS_ITEM,(DWORD)&

mcistatusparms);

returnmcistatusparms.dwReturn;

Play()

MCI_PLAY_PARMSmciplayparms;

mciplayparms.dwCallback=(DWORD)m_hWnd;

mciplayparms.dwFrom=0;

//Ã

mciSendCommand(DeviceID,MCI_PLAY,MCI_FROM|MCI_NOTIFY,(DWORD)(LPVOID)&

mciplayparms);

Pause()

mciSendCommand(DeviceID,MCI_PAUSE,0,0);

resum()

mciSendCommand(DeviceID,MCI_RESUME,0,0);

Stop()

mciSendCommand(DeviceID,MCI_STOP,0,0);

在dlg.cpp文件的public中添加一行代码:

inthour,minute,second;

在CMp3Dlg:

CMp3Dlg(CWnd*pParent/*=NULL*/)中添加如下

CMp3Dlg:

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

:

CDialog(CMp3Dlg:

IDD,pParent)

//{{AFX_DATA_INIT(CMp3Dlg)

m_int=0;

//}}AFX_DATA_INIT

//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32

m_hIcon=AfxGetApp()->

LoadIcon(IDI_ICON1);

hour=0;

minute=0;

second=0;

dlg.cpp中头文件如下:

Dlg.h"

Digitalv.h"

//Ò

#pragmacomment(lib,"

Winmm.lib"

staticcharTHIS_FILE[]=__FILE__;

在对话框中双击添加添加onfileopen函数,代码如下

Onfileopen()

charfilefiler[]="

mp3文件(*.mp3)|*.mp3|"

"

wma文件(*.wma)|*.wma|"

"

wav文件(*.wav)|*.wav|"

;

CFileDialogdlg(true,NULL,NULL,OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT|OFN_ENABLESIZING,filefiler);

if(dlg.DoModal()==IDOK)

CStringstrfilepath=dlg.GetPathName();

CStringstrfilename=dlg.GetFileName();

SetDlgItemText(IDC_filename,strfilename);

CStringmtime;

CClientDCdc(this);

dc.SetBkColor(RGB(124,252,0));

//设置放置计数器区域的外观

dc.SetTextColor(RGB(255,255,203));

//设置数字显示的颜色

mtime.Format("

%02d:

%02d"

hour,minute,second);

//显示时间进度

dc.TextOut(280,128,mtime);

Mp3mp3;

mp3.Load(this->

m_hWnd,strfilepath);

GetDlgItem(IDC_open)->

EnableWindow(TRUE);

GetDlgItem(IDC_pause)->

GetDlgItem(IDC_stop)->

GetDlgItem(IDC_del)->

m_list.InsertString(m_list.GetCount(),strfilename);

//获取文件名

m_list.SetCurSel(m_list.GetCount()-1);

双击播放,进入代码,添加如下

Onopen()

CStringstrfilename;

intindex=m_list.GetCurSel();

if(index==-1)

MessageBox("

请添加音乐"

);

return;

m_list.GetText(index,strfilename);

mp3.Stop();

m_hWnd,strfilename);

mp3.Play();

SetTimer(0,1000,NULL);

同理,暂停,停止,删除,退出代码如下

Onpause()

//TODO:

Addyourcontrolnotificationhandlercodehere

CStringstrtemp;

GetDlgItemText(IDC_pause,strtemp);

//获取按钮状态

if(strtemp.Compare("

暂停"

)==0)

mp3.Pause();

SetDlgItemText(IDC_pause,"

继续"

KillTimer(0);

//取消计数器的显示

mp3.resum();

SetTimer(0,1000,NULL);

Onstop()

SetDlgItemText(IDC_pause,"

KillTimer(0);

EnableWindow(FALSE);

GetDlgItem(IDC_del)->

Ondel()

UpdateData(TRUE);

SetDlgItemText(IDC_filename,"

//歌曲时间置0

if(index!

=CB_ERR)

m_list.DeleteString(index);

Onexit()

CDialog:

OnCancel();

ctrl+w打开类向导,如图,添加ontimer函数

代码如下:

OnTimer(UINTnIDEvent)

Addyourmessagehandlercodehereand/orcalldefault

second++;

if(second==60)//设置钟表的显示

minute++;

if(minute==60)

hour++;

DWORDcdf=mp3.getinformation(MCI_STATUS_POSITION);

DWORDcdfrom;

cdfrom=MCI_MAKE_MSF(MCI_MSF_MINUTE(cdf),MCI_MSF_SECOND(cdf),MCI_MSF_FRAME(cdf));

//获取当前播放文件的信息

UpdateData(false);

OnTimer(nIDEvent);

ctrl+w打开类向导添加函数如下

OnDblclkList()//在列表中选中,双击左键播放音乐

 

打开类向导,添加函数如下

OnCustomdrawSlider1(NMHDR*pNMHDR,LRESULT*pResult)

UpdateData(true);

m_int=m_slider.GetPos()/10;

Setvolumn(m_slider.GetPos());

*pResult=0;

OnReleasedcaptureSlider1(NMHDR*pNMHDR,LRESULT*pResult)

添加声音设置函数如下

DWORDCMp3Dlg:

Setvolumn(DWORDvol)

MCI_DGV_SETAUDIO_PARMSmcisetvolumn;

mcisetvolumn.dwCallback=NULL;

mcisetvolumn.dwItem=MCI_DGV_SETAUDIO_VOLUME;

mcisetvolumn.dwValue=vol;

mciSendCommand(DeviceID,MCI_SETAUDIO,MCI_DGV_SETAUDIO_VALUE|MCI_DGV_SETAUDIO_ITEM,(DWORD)(LPVOID)&

mcisetvolumn);

//returnmcisetvolumn.dwValue;

return0;

到此已经基本完成了,我们可以试听一下

接下来我们可以到包成exe可执行文件,为了去掉那个不好看的图标,我们可以进入res文件夹,把原来的图标删掉,不过,你要放入一个cio格式的图片作为图标,cio

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

当前位置:首页 > 人文社科 > 军事政治

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

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