手把手教您用MFC做MP3音乐播放器

合集下载

mfc编程mp3

mfc编程mp3

Init();
m_Pause.SetWindowText("暂停");
//
CString filter = "媒体文件(所有类型)|*.cda;*.mid;*.rmi;*.midi;*.asf;*.wm;*.wma; *.asx;*.wax;*.m3u;*.wvx;*.mpeg;*.mpg;*.m1v;*.mp3; *.avi;*.wmv;*.wav;*.snd;*.au;*.aif;*.aifc|";
MCIWndSeek(m_hWnd,pos); // 定位文件到pos 处
MCIWndPlay(m_hWnd); // 播放文件
MCIWndPause(m_hWnd); // 暂停
MCIWndResume(m_hWnd); // 从暂停的地方重新启动
MCIWndStop(m_hWnd); // 停止
mciSendCommand (m_wDeviceID, MCI_PLAY,
MCI_FROM, (DWORD)(LPVOID)
&PlayParms));
---- 4. 暂停
MCI_PLAY_PARMS PlayParms;
mciSendCommand (m_wDeviceID, MCI_PAUSE, 0,
{
m_Music.Close();
m_MusicList.SetCurSel(index);
CString sPath = m_MusicAry.GetAt(index);
m_Music.Open(sPath);
m_Status.SetWindowText(sPath + _T(" 正在播放..."));//在状态条中显示提示信息

基于MFC运用windows media player控件实现的多媒体播放器

基于MFC运用windows media player控件实现的多媒体播放器

基于MFC运用windows media player控件实现的多媒体播放器设计平台PC(windows 7 x64),Visual C++ 6.0设计框图一.工程创建本程序基于MFC的对话框模式,起名为MediaPlayer。

二. 添加Windows Media Player 控件在对话框的空白处点击右键选择“Insert ActiveX control”,在弹出的对话框中找到Windows Media Player。

(因为Win7系统中没有ActiveMovieControl控件所以就用以上控件代替了。

)三.为Windows Media Player 控件设置变量在已经添加好的控件上单击右键选择“ClassWizard”,在弹出的窗口中切换到“Member Variables”一栏,找到刚刚添加的控件的ID,选中它然后在右侧的按钮中点击“Add Variables”,然后如图所示:这样就添加成功了。

此时在源文件的对话框中,系统会自动生成必需的媒体实现文件。

四.播放器界面设计设计的界面如下图所示,其中播放控制按钮有打开文件,播放,暂停,停止,快退,快进,播放列表,全屏,退出,关于。

然后还有音量控制,播放模式,播放进度,列表选项的相关控制器件。

控件ID与变量关联如下:控件ID 变量类型变量名称WMPlayer IDC_OCX1 CWMPPlayer4 m_playerListControl IDC_LIST1 CListCtrl m_listCtrlSlider IDC_SLIDER1 CSliderCtrl m_scheduleSlider IDC_SLIDER2 CSliderCtrl m_VOLUME Radio Button IDC_ORDER int m_order 按钮控件的ID和对应的响应函数名称如下:控件名称ID 响应函数名称打开文件IDC_OPEN OnOpen()播放IDC_PLAY OnPlay()暂停IDC_PAUSE OnPause()停止IDC_STOP OnStop()快退IDC_REVERSE OnReverse()快进IDC_FORWARD OnForward()播放列表IDC_PLAYLIST OnPlayList()全屏IDC_FULLSCREEN OnFullScreen()退出IDC_EXIT OnExit()- IDC_SUB OnSub()+ IDC_ADD OnAdd()上一曲IDC_LAST OnLast()下一曲IDC_NEXT OnNext()关于IDC_ABOUT OnAbout()静音IDC_SILENCE OnSlience() 选中项上移IDC_LISTCHOOSEUP OnListchooseup()选中项下移IDC_LISTCHOOSEDOWN OnListchoosedown()删除选中项IDC_LISTCHOOSEDELETE OnListchoosedelet()删除所有项IDC_LISTDELETEALL OnListdeleteall()导入列表IDC_LISTIMPORT OnListimport()导出列表IDC_LISTEXPORT OnListexport() 五.功能实现(1)播放控制Windows Media Player 控件初始化在添加该控件的时候自动生成的多个库文件,不同的文件实现播放器各个方面的功能,所以需要我们手动将他们联系起来。

MFC播放MP3

MFC播放MP3

MFC播放MP3工程中添加 Winmm.lib stdafx.h 里面添加包含 Mmsystem.h 使用mciSendCommand函数播放MP3#include <windows.h>#include "resource.h"#pragma comment(lib, "winmm")LRESULT CALLBACK WndProc(HWND,UINT,WPARAM ,LPARA M );int MP3Player(HWND,int fnNum);HINSTANCE Hinstance;int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPr evInstance,LPSTR lpCmdLine,int nShowCmd){WNDCLASS wndclass;HWND hwnd;MSG msg;WCHAR *title=L"快乐の小②B制作";WCHAR *MP3=L"MP3 Player";Hinstance=hInstance;wndclass.cbClsExtra=NULL;wndclass.cbWndExtra=NULL;wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE _BRUSH);wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);wndclass.hIcon =LoadIcon(NULL,IDI_APPLICATION);wndclass.hInstance=hInstance;wndclass.lpfnWndProc=WndProc;wndclass.lpszClassName=MP3;wndclass.lpszMenuName=0;wndclass.style=CS_HREDRAW |CS_VREDRAW;if(!RegisterClass(&wndclass)){MessageBox(NULL,L"注册窗口失败!",L"Error Info",MB_OK);return 0;}hwnd=CreateWindowEx(WS_EX_LAYERED,MP3,title,WS_OVE RLAPPED | WS_CAPTION | WS_SYSMENU| WS_MINIMIZEBOX ,CW_USEDEFAULT,CW_USEDEFAULT,310,410,NULL,NULL,hIns tance,NULL);AnimateWindow(hwnd,1000,AW_BLEND|AW_SLIDE);//窗口效果函数//UpdateWindow(hwnd);while(GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);DispatchMessage(&msg);}return msg.wParam;}LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){PAINTSTRUCT ps;HDC hdc,hdcmem;HBITMAP hBitmap;BITMAP Bitmap;static HWND ChildHwnd_1=0;static HWND ChildHwnd_2=0;if(message == WM_PRINT || message == WM_PRINTCLIENT) {hdc=(HDC)wParam;hBitmap=LoadBitmap(Hinstance,MAKEINTRESOURCE(IDB_B ITMAP1));GetObject(hBitmap,sizeof(BITMAP),&Bitmap);hdcmem=CreateCompatibleDC(hdc);SelectObject(hdcmem,hBitmap);BitBlt(hdc,0,0,Bitmap.bmWidth,Bitmap.bmHeight,hdcmem,0 ,0,SRCCOPY);DeleteDC(hdcmem);}switch(message){case WM_CREATE:ChildHwnd_1=CreateWindowEx(WS_EX_LAYERED,L"Button", L"Play",WS_VISIBLE|WS_CHILD,50,330,70,30,hwnd,(HMENU)1,0, NULL);ChildHwnd_2=CreateWindowEx(WS_EX_LAYERED,L"Button", L"Stop",WS_VISIBLE|WS_CHILD,190,330,70,30,hwnd,(HMENU)2,0 ,NULL);return 0;case WM_CLOSE:DestroyWindow(hwnd);PostQuitMessage(0);return 0;case WM_COMMAND:switch(wParam){case 1:MP3Player(hwnd,1);break;case 2:MP3Player(hwnd,2);break;}return 0;case WM_PAINT:hBitmap=LoadBitmap(Hinstance,MAKEINTRESOURCE(IDB_B ITMAP1));GetObject(hBitmap,sizeof(BITMAP),&Bitmap);hdc=GetDC(hwnd);hdcmem=CreateCompatibleDC(hdc);SelectObject(hdcmem,hBitmap);BitBlt(hdc,0,0,Bitmap.bmWidth,Bitmap.bmHeight,hdcmem,0 ,0,SRCCOPY);DeleteDC(hdcmem);BeginPaint(hwnd,&ps);EndPaint(hwnd,&ps);return 0 ;}return DefWindowProc(hwnd,message,wParam,lParam);}int MP3Player(HWND hwnd,int fnNum){switch(fnNum){case 1://播放static MCI_OPEN_PARMS open;static MCI_PLAY_PARMS play;static MCIDEVICEID MP3ID;open.dwCallback=0;open.lpstrAlias=NULL;open.lpstrDeviceType=L"MPEG"; //MP3设备open.lpstrElementName=L"该死的温柔.mp3"; //要播放的文件open.wDeviceID=0;mciSendCommand(0,MCI_OPEN,MCI_WAIT| MCI_OPEN_ELE MENT,(DWORD)(LPMCI_OPEN_PARMS)&open);//初始化MP3ID=open.wDeviceID;play.dwCallback=(DWORD)hwnd; //播放程序的窗口句柄play.dwFrom=0;play.dwTo=0;mciSendCommand(MP3ID,MCI_PLAY,MCI_NOTIFY,(DWORD) (LPMCI_OPEN_PARMS)&play);return 0;case 2://停止MCI_GENERIC_PARMS close;close.dwCallback=(DWORD)hwnd;mciSendCommand(MP3ID,MCI_CLOSE,MCI_NOTIFY,(DWOR D) (LPMCI_GENERIC_PARMS)&close);return 0;}return 0;}。

MP3音乐播放器软件课程设计报告(MFC)

MP3音乐播放器软件课程设计报告(MFC)

课程设计说明书课程设计名称:软件综合课程设计课程设计题目:音频播放器程序的设计与实现学院名称:信息工程学院电子信息工程专业课程设计任务书正文:目录引言 (5)一、设计程序的目的与要求 (6)目的 (6)要求 (6)二、方案实现与调试 (6)总体设计 (6)1、实现功能 (6)2、功能模块图 (7)详细设计 (7)1、界面布局 (7)2、各模块功能设计 (8)2.1处理“打开”按钮 (9)2.2处理“播放”按钮 (9)2.3处理“暂停”按钮 (9)2.4处理“停止”按钮 (9)2.5处理“音量”按钮 (10)2.6处理“退出”按钮 (10)3 操作步骤 (10)三、课程设计分析与总结 (11)分析 (11)总结 (11)附录 (13)关键程序清单 (13)参考文献 (20)引言MP3播放器的设计是利用MFC应用程序、媒体控制接口MIC 的基本知识而设计的。

1.1 MFC简介MFC是Visual C++是核心。

MFC类库将所有图形用户界面的元素如窗口、菜单和按钮等都以类的形式进行了封装,MFC AppWizard 向导根据继承性利用MFC派生出自己的类,并对Windows应用程序进行了分解,利用MFC派生类对应用程序重新进行组装,同时还规定了应用程序中各个MFC派生类对象之间的相互联系,实现了标准Windows应用程序的功能,这就是向导生成的所谓MFC应用程序框架。

每个MFC类都包括了一些函数,函数放到类中,符合C++编程方法。

这些函数,必须通过类定义对象才能使用[1]。

1.2 MCI简介MCI(Media Control Interface)媒体控制接口是MircroSoft提供的一组多媒体设备和文件的标准接口,它的好处是可以方便地控制绝大多数多媒体设备包括音频、视频、影碟、录像等多媒体设备,而不需要知道它们的内部工作状况。

它所支持的媒体格式包括mp3、avi、wav、mpeg等等[2]。

音频技术发展较早,几年前一些技术已经成熟并产品化,音频技术主要包括四个方面:音频数字化、语音处理、语音合成及语音识别。

手把手教您用MFC做MP3音乐播放器

手把手教您用MFC做MP3音乐播放器

打开vc6.0,建立如图所示mfc工程文件选择基于对话框的确定删除所有空间,建立如图所示对话框属性如下:播放IDC_open;添加IDC_fileopen;暂停IDC_pause;删除IDC_del;停止IDC_stop;退出IDC_exit;音乐名编辑框IDC_filename;音量控制滑块IDC_SLIDER1;音量控制编辑框IDC_vol;建立类向导对应如下:在onpaint函数下添加代码void CMp3Dlg::OnPaint(){if (IsIconic()){CPaintDC dc(this); // device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);// Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// Draw the icondc.DrawIcon(x, y, m_hIcon);}else{//CDialog::OnPaint();CPaintDC dc(this);CRect rect;GetClientRect(&rect);CDC dcMem;dcMem.CreateCompatibleDC(&dc);CBitmap bmpBackground;bmpBackground.LoadBitmap(IDB_BITMAP6); /IDB_BITMAP6是你的位图地址BITMAP bitmap;bmpBackground.GetBitmap(&bitmap);CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground);dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight ,SRCCOPY);}}编译运行,你就会看到背景有图片了。

简单播放器的制作MFC

简单播放器的制作MFC
{
MCI_GENERIC_PARMS mciGP;
return mciSendCommand(m_wID,MCI_RESUME,MCI_NOTIFY|MCI_WAIT,
(DWORD)(LPVOID)&mciGP);
}
//停止播放
DWORD MCIMP3::MCIStop()
{
MCI_GENERIC_PARMS mciGP;
2.1 MFC概况简介
MFC(微软基础类库,Microsoft Foundation Classes),是一个由微软公司提供的类库,以C++类的形式封装了Windows的API,可提供一个应用程序的框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。借助于MFC可实现多种应用程序的开发。
{
MCI_SEEK_PARMS mciSP;
mciSP.dwTo=dwTo*1000;
dwreturn=mciSendCommand(m_wID,MCI_SEEK,MCI_WAIT|MCI_NOTIFY|MCI_TO,
(DWORD)(LPVOID)&mciSP);
}else if (dwTo>=m_dwLength)
计算机与信息工程学院
《Windows程序设计》
项目实践报告
设计题目MP3播放器的设计
作者姓名冯晶
所学专业名称网络工程
指导教师杨斌
2012年5月26日
MP3播放器的设计
摘要:本程序设计的是一个简单的MP3播放器,本系统是基于MFC开发的,完成音乐的播放以及相关简单的功能的设计。其功能就是能够播放常见的音频文件,如mp3,wmv以及wma格式的音乐文件.还有切歌、音量调节以及终止和暂停的操作功能,音频文件是从本地文件中直接读取。本程序还能在播放歌曲中,显示歌曲的清单,以及播放的进度。也能通过选择按钮来选歌,或者删除歌曲,另外通过按钮可以实现切歌功能。当然该系统还有许多不尽如人意地方,比如用户界面不美观。

用C语言编写的MP3简易播放程序

用C语言编写的MP3简易播放程序

//////////////////////////////////////////////////////////////////////////
HRESULT InitDirectShow()
{
HRESULT hr;
CoInitialize(NULL); //初始化COM
//创建各个对象
}
quit:
FreeDirectShow();
return 0;
}
printf("请输入文件名:");
scanf("%s", path);
printf("正在处理命令...\n", cmd, path);
if(FAILED(LoadMusicFile(path)))
{
printf("载入文件“%s”失败!\n", path);
}
else if(!stricmp(cmd, "s"))
Stop();
else if(!stricmp(cmd, "e"))
goto quit;
else
{
printf("无法识别的命令");
getch();
}
}
//////////////////////////////////////////////////////////////////////////
//变量定义:
IGraphBuilder* pGBuilder;
IMediaControl* pMControl;
IMediaPosition* pMPos;

用C#开发的简单MP3播放器

用C#开发的简单MP3播放器

一、软件说明:功能说明:一个简易小巧的MP3播放器,可以播放已经下载好的MP3格式的音乐。

解决什么样的实际问题:市场上的音乐播放器大都占用资源比较大,而且需要联网,即使播放本地音乐,也会占用较多的网速,而这款播放器解决了这些问题。

(虽然还是有很多缺陷,但用起来还是比较方便的。

)性能说明:可以播放单首或多首歌曲,可以保存或清空当前播放列表,支持列表循环,顺序播放,单曲循环。

(但目前只支持MP3格式。

)程序类型说明:这个播放器是winform应用程序。

二、软件设计软件整体结构图及模块划分:软件整体结构图:控制模块:歌曲列表显示区:在VS的“解决方案资源管理器”中的文件说明:整个项目的文件如下:其中,Properties中所包含的的文件有:这里包含的是定义程序集属性的文件,用来设定生成的有关程序集的常规信息dll文件的一些参数。

引用中包含的文件有:这里包含的是这个项目所用的的一些类库信息。

Form1.cs中包含有:这些是窗体的设计信息,而Program.cs是整个源程序的入口。

各模块对应的主要对象或方法:控制模块中主要用到的是axWindowsmediaPlayer控件以及MenuStrip控件。

其中Windows media Player 控件用到的方法属性主要有:axWindowsMediaPlayer1.BeginInit(); //初始化axWindowsMediaPlayer1.settings.autoStart; //自动播放axWindowsMediaPlayer1.settings.setMode("shuffle", false); //顺序播放axWindowsMediaPlayer1.settings.enableErrorDialogs;axWindowsMediaPlayer1.settings.balance;axWindowsMediaPlayer1.settings.mute;axWindowsMediaPlayer1.settings.volume;MenuStrip控件用到的方法事件有:privatevoid打开文件ToolStripMenuItem1_Click(object sender, EventArgs e);privatevoid添加歌曲ToolStripMenuItem_Click(object sender, EventArgs e);privatevoid添加文件夹ToolStripMenuItem_Click(object sender, EventArgs e);privatevoid退出ToolStripMenuItem_Click(object sender, EventArgs e); privatevoid清空列表ToolStripMenuItem1_Click(object sender, EventArgs e);privatevoid顺序播放ToolStripMenuItem_Click(object sender, EventArgs e);privatevoid单曲循环ToolStripMenuItem_Click(object sender, EventArgs e);privatevoid随机播放ToolStripMenuItem_Click(object sender, EventArgs e);数据库设计或数据文件说明:由于播放器使用数据量较小,故采用TXT保存歌曲文件列表。

基于Visual C++声音文件操作(自己编写MP3播放器)

基于Visual C++声音文件操作(自己编写MP3播放器)

基于Visual C++6.0的声音文件操作——写自己的播放器三、声音文件的声音数据的读取操作操作声音文件,也就是将WAVE文件打开,获取其中的声音数据,根据所需要的声音数据处理算法,进行相应的数学运算,然后将结果重新存储与WAVE格式的文件中去。

可以使用CFILE类来实现读取操作,也可以使用另外一种方法,拿就是使用Windows提供的多媒体处理函数(这些函数都以mmino打头)。

这里就介绍如何使用这些相关的函数来获取声音文件的数据,至于如何进行处理,那要根据你的目的来选择不同的算法了。

WAVE文件的操作流程如下:1.调用mminoOpen函数来打开WAVE文件,获取HMMIO类型的文件句柄;2.根据WAVE文件的结构,调用mmioRead、mmioWrite和mmioSeek 函数实现文件的读、写和定位操作;3.调用mmioClose函数来关闭WAVE文件。

下面的函数代码就是根据WAVE文件的格式,实现了读取双声道立体声数据,但是在使用下面的代码过程中,注意需要在程序中链接Winmm.lib库,并且包含头文件"Mmsystem.h"。

//获取声音文件数据的函数,pString参数指向要打开的声音文件;{if (pString==NULL)return NULL;HMMIO file1;//定义HMMIO文件句柄;file1=mmioOpen((LPSTR)pString,NULL,MMIO_READWRITE);//以读写模式打开所给的WAVE文件;if(file1==NULL){MessageBox("WAVE文件打开失败!");Return NULL;}char style[4];//定义一个四字节的数据,用来存放文件的类型;mmioSeek(file1,8,SEEK_SET);//定位到WAVE文件的类型位置mmioRead(file1,style,4);if(style[0]!='W'||style[1]!='A'||style[2]!='V'||style[3]!='E')//判断该文件是否为"WAVE"文件格式{MessageBox("该文件不是WAVE格式的文件!");Return NULL;}PCMWAVEFORMAT format; //定义PCMWAVEFORMAT结构对象,用来判断WAVE文件格式;mmioSeek(file1,20,SEEK_SET);//对打开的文件进行定位,此时指向WAVE文件的PCMWAVEFORMAT结构的数据;mmioRead(file1,(char*)&format,sizeof(PCMWAVEFORMAT));//获取该结构的数据;if(format.wf.nChannels!=2)//判断是否是立体声声音;{MessageBox("该声音文件不是双通道立体声文件");return NULL;}mmioSeek(file1,24+sizeof(PCMWAVEFORMAT),SEEK_SET);//获取WAVE文件的声音数据的大小;long size;mmioRead(file1,(char*)&size,4);BYTE *pData;pData=(BYTE*)new char[size];//根据数据的大小申请缓冲区;mmioSeek(file1,28+sizeof(PCMWAVEFORMAT),SEEK_SET);//对文件重新定位;mmioRead(file1,(char*)pData,size);//读取声音数据;mmioClose(file1, MMIO_FHOPEN);//关闭WAVE文件;return pData;}四、使用MCI方法操作声音文件WAVE声音文件一个最基本的操作就是将文件中的声音数据播放出来,用Windows提供的API函数BOOL sndPlaySound(LPCSTR lpszSound, UINT fuSound)可以实现小型WAV文件的播放,其中参数lpszSound 为所要播放的声音文件,fuSound为播放声音文件时所用的标志位。

基于MFC的音乐播放器vc6.0

基于MFC的音乐播放器vc6.0
afx_msg void OnPrevis();
afx_msg void OnNexts();
afx_msg void Onexit();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
4.在playerDlg.cpp中的函数如下
// playerDlg.cpp : implementation file
DDX_Control(pDX, m_list, m_list2);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CPlayerDlg, CDialog)
//{{AFX_MSG_MAP(CPlayerDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPlayerDlg dialog
CPlayerDlg::CPlayerDlg(CWnd* pParent /*=NULL*/)
//
#include "stdafx.h"
#include "player.h"
#include "playerDlg.h"
#pragma comment(lib,"winmm.lib")
#include "mmsystem.h"
#include "Digitalv.h"

VBA播放MP3歌曲的代码

VBA播放MP3歌曲的代码

VBA播放MP3歌曲的代码可以用来做背景音乐。

使用方法:打开word、excel等然后按Alt+F11 在打开的窗口中粘贴下面代码:Private Declare Function m ciS endString Lib "winmm.dll" Alias "mciSendStringA" (ByV al lpstrCommand As String, ByV al lpstrReturnString As String, ByV al uReturnLength As Long, ByV al hwndCallback As Long) As LongDim sMCI As String * 255Dim sMP3Dim iNum As IntegerPublic Function Blank(ByV al szString As String) As StringDim l As Integerl = InStr(szString, Chr(0))If l > 0 ThenBlank = Left(szString, l - 1)ElseBlank = szStringEnd IfEnd FunctionPrivate Sub CommandButton1_Click()mciSendString "close OpenFile", 0&, 0, 0End SubPrivate Sub CommandButton2_Click()mciSendString "status OpenFile mode", sMCI, 255, 0If Blank(sMCI) <> "playing" ThenmciSendString "close OpenFile", 0&, 0, 0mciSendString "open """ & "D:\aw\情非得已.mp3"" alias OpenFile type MPEGVideo", 0&, 0, 0mciSendString "play OpenFile", 0&, 0, 0iNum = iNum + 1'If iNum > UBound(sMP3) Then Timer1.Enabled = FalseEnd IfEnd Sub在文档中添加两个按钮控件就行了。

实验简单音频播放器程序实现

实验简单音频播放器程序实现

实验2简单音频播放器程序实现1.上机实验报告二等文 四、实验内容用 MFC 设计具有一般能播放 *mp3,*wma,*mdi,*wav,*avi,*dat 件,还有具有播放、暂停、停止、音量调节等功能。

1、 点击“打开”,添加播放资源2、 单击“播放”,开始播放3、 点击“暂停”,暂停播放;之后点击“恢复”,播放器继续播放4、 单击“终止”,音乐播放停止5、滑动音量滑块调节音量大小五、调试过程及实验结果本次作业参考了优酷上的指导视频,然后仿照编写的。

在完成此次大作业的过程中遇到了很多问题,首先音量控制就是一个难点,最初完成的版本可以运行但音量无法控制,后来添加了一个函数解决问题:void CMUSIC_PLAYER_100511217Dlg::0 nCustomdrawSlider(NMHDR* pNMHDR, LRESULT* pResult){UpdateData(true);m_vol=m_slider.GetPos()/10;SetVolu mn (m_slider.GetPos());UpdateData(false); *pResult = 0;}最终成果:过完成这个简易的音乐播放器,掌握到了MFC编程的基本方法,使自己的编程能力得到进一步的提高,学会使用DirectSound实现音频播放程序的方法。

// DDX/DDV support#un def THIS_FILEstatic char THIS_FILE[] = __FILE__;#en difHWND m_hWnd;MCI_OPEN_PARMS mciope nparms;DWORD ItemLe ngth,ltemTo;DWORD item;/////////////////////////////////////////////////////////////////////////////// CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialog{public:CAboutDlg();// Dialog Data〃{{AFX_DATA(CAboutDlg)enum { IDD = IDD_ABOUTBOX };〃}}AFX_DATA// ClassWizard gen erated virtual fun ctio n overrides〃{{AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExcha nge(CDataExcha nge* pDX);//}}AFX_VIRTUAL// Impleme ntati onprotected://{{AFX_MSG(CAboutDlg)//}}AFX_MSGDECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD){//{{AFX_DATA_INIT(CAboutDlg)//}}AFX_DATA_INIT}void CAboutDlg::DoDataExcha nge(CDataExcha nge* pDX){CDialog::DoDataExcha nge(pDX);〃{{AFX_DATA_MAP(CAboutDlg)〃}}AFX_DATA_MAPmciSe ndComma nd(mciope nparms.wDevicelD,MCI_SETAUDIO,MCI_DGV_SETAUDIO_ VALUE|MCI_DGV_SETAUDIO_ITEM,(DWORD)(LPVOID)&m cisetvolume);return 0;} void CMyDlg::O nabout()GetDlgltem(IDC_pause)->E nableWi ndow(true);GetDlgltem(IDC_stop)->E nableWi ndow(true); }Stop();m_process.SetPos(0);KillTimer(O);// TODO: Add your con trol no tificati on han dler code here}void CMyDlg::O nCustomdrawvolslider(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your con trol no tificati on han dler code hereUpdateData(true);m_in t=m_c on trolvol.GetPos()/15;setvolume(m_c on trolvol.GetPos());UpdateData(false);*pResult = 0;}16 / 16。

MFC音乐播放器傻瓜教程

MFC音乐播放器傻瓜教程

MFC音乐播放器傻瓜教程代码下载地址1、建立工程 ..................................................................... .. (2)1、建立一个MFC工程,命名为Tao_Music ..............................................................32、选择为基本对话框 ..................................................................... .. (3)、包含WindowsSockts ................................................................. ........................... 4 34、使用静态链接库[方便一会直接生成的exe文件单独可以发布] (5)2、搭建界面...................................................................... (5)1、拖入控件: .................................................................... (5)2、控件拖入并摆好 ..................................................................... . (6)3、控件属性设置: .................................................................... ............................. 7 3、写代码实现功能 ..................................................................... . (15)1、变量绑定: .................................................................... . (15)2、加入图片资源 ..................................................................... .. (16)3、新建mp3类: .................................................................... .. (17)4、修改Tao_MusicDlg.h.......................................................... (20)5、修改Tao_Music.cpp........................................................... . (21)6、功能实现: .................................................................... . (32)7、加一个TImer消息使时间跑起来~ ..................................................................... .39、给音量控制滑块加消息,使音量控制实现 ...........................................................42 8 编译运行完工~ ..................................................................... .. (43)1、建立工程1、建立一个MFC工程,命名为Tao_Music2、选择为基本对话框3、包含Windows Sockts[因为要用网络功能]4、使用静态链接库 [方便一会直接生成的exe文件单独可以发布]2、搭建界面1、拖入控件:拖入7个用于播放控制的button,一个picture控件,一个控制音量的滑块。

MFC做音乐播放器——你懂的

MFC做音乐播放器——你懂的

前言:音乐播放器其实我在大一的时候就用非常生硬的语法写出过一个非常简陋的播放器。

这次写的这个是以前那个的加强版。

虽然说还是有很多bug,而且我至今不知道那些BUG是什么地方的问题。

先给个截图吧,播放器的界面:其实看着还是有那么回事的。

恩,其实除了波形和在线下载的话,功能和酷狗,以及千千静听等播放器的功能是一样的。

音乐播放器的关键是播放音乐,所以第一步是要设计一个类,这个类拥有各种各样的播放音乐的能力。

我设计的类名字叫Playerclass Player{public:Player();virtual ~Player();void Play();//播放函数void Pause();//暂停函数void Stop();//停止函数void Jump(DWORD pos);//这个函数是用来通过直接拖动进度条,然后播放从歌曲的相应位置播放的函数void Read(CString str);//这个函数必须在所有函数的前面调用,他有一个传入参数,是指MP3文件的路径void SetVolume(DWORD vol);//音量大小的设定。

这个不难MCI_STATUS_PARMS GetMode();//这个比较关键,是获得当前的播放状态(一首歌是否播放完了就是靠他)MCI_STATUS_PARMS GetNow();//当前是播放的歌曲第几分第几秒?可以用来改变时间栏和进度条MCI_STATUS_PARMS GetLenth();//获得歌曲的长度。

(时间)private:MCI_PLAY_PARMS m_play;MCI_OPEN_PARMS m_open;MCIDEVICEID m_dID;HWND m_parent;MCI_STATUS_PARMS m_status;MCI_SEEK_PARMS m_seek;MCI_STATUS_PARMS m_mode;};各个函数(可以作为以后MCI函数的查阅手册)实现方法是:void Player::Read(CString str){m_dID=NULL;m_open.lpstrElementName=str;mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_ELEMENT,(DWORD)(LPVOID)&m_o pen);//MCI打开文件m_dID=m_open.wDeviceID;}void Player::Play(){m_play.dwCallback=(DWORD)m_parent;mciSendCommand(m_dID,MCI_PLAY,MCI_NOTIFY,(DWORD)(LPVOID)&m_play);//播放.....下面就不写注释了}void Player::Pause(){mciSendCommand(m_dID,MCI_PAUSE,NULL,NULL);void Player::Stop(){mciSendCommand(m_dID,MCI_CLOSE,NULL,NULL);m_status.dwReturn=0;}MCI_STATUS_PARMS Player::GetLenth(){m_status.dwItem=MCI_STATUS_LENGTH;mciSendCommand(m_dID,MCI_STATUS,MCI_STATUS_ITEM,(DWORD)(LPVOID)&m_s tatus);return m_status;}MCI_STATUS_PARMS Player::GetNow(){m_status.dwItem=MCI_STATUS_POSITION;mciSendCommand(m_dID,MCI_STATUS,MCI_STATUS_ITEM,(DWORD)(LPVOID)&m_s tatus);return m_status;}MCI_STATUS_PARMS Player::GetMode(){m_mode.dwItem=MCI_STATUS_MODE;mciSendCommand(m_dID,MCI_STATUS,MCI_STATUS_ITEM,(DWORD)(LPVOID)&m_ mode);return m_mode;}void Player::Jump(DWORD pos){m_seek.dwTo=pos;mciSendCommand(m_dID,MCI_SEEK,MCI_TO|MCI_WAIT,(DWORD)(LPVOID)&m_seekmciSendCommand(m_dID,MCI_PLAY,MCI_NOTIFY,(DWORD)(LPVOID)&m_play);}void Player::SetVolume(DWORD vol){MCI_DGV_SETAUDIO_PARMS mcivol;mcivol.dwCallback=(DWORD)m_parent;mcivol.dwItem=MCI_DGV_SETAUDIO_VOLUME;mcivol.dwValue=vol;mciSendCommand(m_dID,MCI_SETAUDIO,MCI_DGV_SETAUDIO_VALUE|MCI_DGV_ SETAUDIO_ITEM,(DWORD)(LPVOID)&mcivol);}基本上都是运用mciSendCommand这个函数,传入不同的参数,就可以达到不同的效果。

MM07-3.2音频播放器的制作

MM07-3.2音频播放器的制作
改变由mmioOpen打开的RIFF文件中 的文件指针位置 允许或禁止缓冲区I/O 改变由mmioOpen打开的RIFF文件中 的信息 将字符串转换为4字符编码 向由mmioOpen打开的RIFF文件中写 入指定长度的字节数 11
如何读RIFF文件

在读入RIFF文件时,首先必须打开RIFF文件,然后找到 自己感兴趣的主块的位置并把文件指针放在数据的顶部
3.
mciGetErrorString
[原型] BOOL mciGetErrorString (DWORD fdwError, LPTSTR lpszErrorText , UINT cchErrorText ) [功能] 获得MCI错误信息。 [参数] fdwError—mciSendCommand或mciSendString函数 返回的错误码。 lpszErrorText—描述错误码的字符串。 cchErrorText—lpszErrorText 字符串的长度。 [返值] 如果函数执行成功则返回TRUE,否则返回FALSE。




从RIFF文件中获取信息
函数功能 为mmioGetInfo 函数提供了增强的文件I/O缓 冲区
多媒体I/O函数 函数名称 mmioAdvance
mmioAscend mmioClose
退出RIFF文件中的主块 关闭由mmioOpen 打开的RIFF文件
mmioCreateChun 在由mmioOpen 打开的RIFF文件中创建一个 k 主块 mmioDescend mmioFlush mmioGetInfo 进入RIFF文件中的主块 将RIFF的文件缓冲写入硬盘 从由mmioOpen 打开的RIFF文件中读入信息 10
12
二、 媒体控制接口(MCI)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

打开vc6.0,建立如图所示mfc工程文件选择基于对话框的确定删除所有空间,建立如图所示对话框属性如下:播放IDC_open;添加IDC_fileopen;暂停IDC_pause;删除IDC_del;停止IDC_stop;退出IDC_exit;音乐名编辑框IDC_filename;音量控制滑块IDC_SLIDER1;音量控制编辑框IDC_vol;建立类向导对应如下:在工程文件,右键,插入,bitmap位图引入你想插入的背景图,必须是bmp格式的进入你的dlg.cpp文件在onpaint函数下添加代码void CMp3Dlg::OnPaint(){if (IsIconic()){CPaintDC dc(this); // device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);// Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// Draw the icondc.DrawIcon(x, y, m_hIcon);}else{//CDialog::OnPaint();CPaintDC dc(this);CRect rect;GetClientRect(&rect);CDC dcMem;dcMem.CreateCompatibleDC(&dc);CBitmap bmpBackground;bmpBackground.LoadBitmap(IDB_BITMAP6); /IDB_BITMAP6是你的位图地址BITMAP bitmap;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: interface for the Mp3 class.////////////////////////////////////////////////////////////////////////#if !defined(AFX_MP3_H__20D325E5_A96A_43FE_A485_92F57C68DD0D__INCLUDED_)#define AFX_MP3_H__20D325E5_A96A_43FE_A485_92F57C68DD0D__INCLUDED_#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000#include "Mmsystem.h"class Mp3{public:Mp3();virtual ~Mp3();HWND m_hWnd; //¼Ç¼µ±Ç°´°¿ÚµÄ¾ä±úDWORD DeviceID;//Ö¸¶¨²¥·ÅÒôÀÖµÄÉ豸IDMCI_OPEN_PARMS mciopenparms; //Ö¸¶¨´ò¿ªÒôÀÖÎļþµÄ²ÎÊývoid Load(HWND hwnd,CString Strfilepath);DWORD getinformation(DWORD item);void Play();void Pause();void resum();void Stop();};#endif // !defined(AFX_MP3_H__20D325E5_A96A_43FE_A485_92F57C68DD0D__INCLUDED_) 在mp3.cpp中添加如下代码// Mp3.cpp: implementation of the Mp3 class.////////////////////////////////////////////////////////////////////////#include "stdafx.h"#include "Mp3²¥·ÅÆ÷.h"#include "Mp3.h"#ifdef _DEBUG#undef THIS_FILEstatic char THIS_FILE[]=__FILE__;#define new DEBUG_NEW#endif//////////////////////////////////////////////////////////////////////// Construction/Destruction//////////////////////////////////////////////////////////////////////Mp3::Mp3(){}Mp3::~Mp3(){}void Mp3::Load(HWND hwnd,CString Strfilepath){m_hWnd=hwnd;mciSendCommand(DeviceID,MCI_CLOSE,0,0); //¼ÓÔØÎļþÇ°ÏÈÇå³ýÉÏ´ÎÉèÖÃmciopenparms.lpstrElementName=Strfilepath;//½«ÒôÀÖÎļþ·¾¶´«¸øÉ豸DWORD dwReturn;if(dwReturn=mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_ELEMENT|MCI_WAIT,(DWORD)(LPV OID)&mciopenparms)){//Èç¹û´ò¿ªÊ§°Ü£¬½«³ö´íÐÅÏ¢´æÔÚbuffer²¢ÏÔʾ³ö´í¾¯¸æchar buffer[256];mciGetErrorString(dwReturn,buffer,256);MessageBox(hwnd,buffer,"³ö´í¾¯¸æ",MB_ICONHAND|MB_ICONERROR|MB_ICONSTOP);}DeviceID=mciopenparms.wDeviceID; //¶àýÌåÉ豸ÀàÐͱàºÅ}DWORD Mp3::getinformation(DWORD item){//MCI½Ó¿Ú¶ÔÏóµÄ״̬MCI_STATUS_PARMS mcistatusparms;//´ý»ñÈ¡µÄÏîÄ¿mcistatusparms.dwItem=item;mcistatusparms.dwReturn=0;//Ïë¶àýÌåÉ豸·¢ËÍÖ¸Á»ñÈ¡µ±Ç°µÄ״̬²ÎÊýmciSendCommand(DeviceID,MCI_STATUS,MCI_STATUS_ITEM,(DWORD)&mcistatusparms);return mcistatusparms.dwReturn;}void Mp3::Play(){MCI_PLAY_PARMS mciplayparms;mciplayparms.dwCallback=(DWORD)m_hWnd;mciplayparms.dwFrom=0; //ÿ´Î´ÓÍ·²¥·ÅmciSendCommand(DeviceID,MCI_PLAY,MCI_FROM|MCI_NOTIFY,(DWORD)(LPVOID)&mcipla yparms);}void Mp3::Pause(){mciSendCommand(DeviceID,MCI_PAUSE,0,0);}void Mp3::resum(){mciSendCommand(DeviceID,MCI_RESUME,0,0);}void Mp3::Stop(){mciSendCommand(DeviceID,MCI_STOP,0,0);mciSendCommand(DeviceID,MCI_CLOSE,0,0);}在dlg.cpp文件的public中添加一行代码:int hour,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// Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON1);hour=0;minute=0;second=0;}dlg.cpp中头文件如下:#include "stdafx.h"#include "Mp3²¥·ÅÆ÷.h"#include "Mp3²¥·ÅÆ÷Dlg.h"#include "Mmsystem.h"#include "Digitalv.h"#include "Mp3.h" //ÒôÁ¿¿ØÖÆÓõ½#pragma comment(lib,"Winmm.lib")#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif在对话框中双击添加添加onfileopen函数,代码如下void CMp3Dlg::Onfileopen(){char filefiler[]="mp3文件(*.mp3)|*.mp3|""wma文件(*.wma)|*.wma|""wav文件(*.wav)|*.wav|";CFileDialogdlg(true,NULL,NULL,OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT|OFN_ENABLESIZING,filefile r);if (dlg.DoModal()==IDOK){CString strfilepath=dlg.GetPathName();CString strfilename=dlg.GetFileName();SetDlgItemText(IDC_filename,strfilename);CString mtime;CClientDC dc(this);hour=0;minute=0;second=0;dc.SetBkColor(RGB(124,252,0));//设置放置计数器区域的外观dc.SetTextColor(RGB(255,255,203));//设置数字显示的颜色mtime.Format("%02d:%02d:%02d",hour,minute,second);//显示时间进度dc.TextOut(280,128,mtime);Mp3 mp3;mp3.Load(this->m_hWnd,strfilepath);GetDlgItem(IDC_open)->EnableWindow(TRUE);GetDlgItem(IDC_pause)->EnableWindow(TRUE);GetDlgItem(IDC_stop)->EnableWindow(TRUE);GetDlgItem(IDC_del)->EnableWindow(TRUE);m_list.InsertString(m_list.GetCount(),strfilename);//获取文件名m_list.SetCurSel(m_list.GetCount()-1);}双击播放,进入代码,添加如下void CMp3Dlg::Onopen(){CString strfilename;int index=m_list.GetCurSel();CString mtime;CClientDC dc(this);Mp3 mp3;hour=0;minute=0;second=0;dc.SetBkColor(RGB(124,252,0));//设置放置计数器区域的外观dc.SetTextColor(RGB(255,255,203));//设置数字显示的颜色mtime.Format("%02d:%02d:%02d",hour,minute,second);//显示时间进度dc.TextOut(280,128,mtime);if(index==-1){MessageBox("请添加音乐");return;}m_list.GetText(index,strfilename);SetDlgItemText(IDC_filename,strfilename);mp3.Stop();mp3.Load(this->m_hWnd,strfilename);mp3.Play();SetTimer(0,1000,NULL);}同理,暂停,停止,删除,退出代码如下void CMp3Dlg::Onpause(){// TODO: Add your control notification handler code here CString strtemp;Mp3 mp3;GetDlgItemText(IDC_pause,strtemp);//获取按钮状态if (pare("暂停")==0){mp3.Pause();SetDlgItemText(IDC_pause,"继续");KillTimer(0);//取消计数器的显示}if (pare("继续")==0){mp3.resum();SetTimer(0,1000,NULL);SetDlgItemText(IDC_pause,"暂停");}}void CMp3Dlg::Onstop(){// TODO: Add your control notification handler code here Mp3 mp3;mp3.Stop();SetDlgItemText(IDC_pause,"暂停");KillTimer(0);//取消计数器的显示CString mtime;CClientDC dc(this);hour=0;minute=0;second=0;dc.SetBkColor(RGB(124,252,0));//设置放置计数器区域的外观dc.SetTextColor(RGB(255,255,203));//设置数字显示的颜色mtime.Format("%02d:%02d:%02d",hour,minute,second);//显示时间进度dc.TextOut(280,128,mtime);GetDlgItem(IDC_open)->EnableWindow(FALSE);GetDlgItem(IDC_pause)->EnableWindow(FALSE);GetDlgItem(IDC_stop)->EnableWindow(FALSE);GetDlgItem(IDC_del)->EnableWindow(FALSE);}void CMp3Dlg::Ondel(){UpdateData(TRUE);Mp3 mp3;int index=m_list.GetCurSel();mp3.Stop();SetDlgItemText(IDC_filename,"");KillTimer(0);hour=0;minute=0;second=0;//歌曲时间置0if (index!=CB_ERR){m_list.DeleteString(index);}}void CMp3Dlg::Onexit(){// TODO: Add your control notification handler code hereCDialog::OnCancel();}ctrl+w打开类向导,如图,添加ontimer函数代码如下:void CMp3Dlg::OnTimer(UINT nIDEvent){// TODO: Add your message handler code here and/or call defaultCString mtime;Mp3 mp3;second++;CClientDC dc(this);dc.SetBkColor(RGB(124,252,0));//设置放置计数器区域的外观dc.SetTextColor(RGB(255,255,203));//设置数字显示的颜色if(second==60)//设置钟表的显示{minute++;second=0;}if(minute==60){hour++;minute=0;}mtime.Format("%02d:%02d:%02d",hour,minute,second);//显示时间进度dc.TextOut(280,128,mtime);DWORD cdf=mp3.getinformation(MCI_STATUS_POSITION);DWORD cdfrom;cdfrom=MCI_MAKE_MSF(MCI_MSF_MINUTE(cdf),MCI_MSF_SECOND(cdf),MCI_MSF_FRAM E(cdf));//获取当前播放文件的信息UpdateData(false);CDialog::OnTimer(nIDEvent);}ctrl+w打开类向导添加函数如下void CMp3Dlg::OnDblclkList() //在列表中选中,双击左键播放音乐{CString mtime;Mp3 mp3;CClientDC dc(this);hour=0;minute=0;second=0;dc.SetBkColor(RGB(124,252,0));//设置放置计数器区域的外观dc.SetTextColor(RGB(255,255,203));//设置数字显示的颜色mtime.Format("%02d:%02d:%02d",hour,minute,second);//显示时间进度dc.TextOut(280,128,mtime);CString strfilename;int index=m_list.GetCurSel();m_list.GetText(index,strfilename);SetDlgItemText(IDC_filename,strfilename);mp3.Stop();mp3.Load(this->m_hWnd,strfilename);mp3.Play();SetTimer(0,1000,NULL);}打开类向导,添加函数如下void CMp3Dlg::OnCustomdrawSlider1(NMHDR* pNMHDR, LRESULT* pResult) {// TODO: Add your control notification handler code hereUpdateData(true);m_int=m_slider.GetPos()/10;Setvolumn(m_slider.GetPos());UpdateData(false);*pResult = 0;}打开类向导,添加函数如下void CMp3Dlg::OnReleasedcaptureSlider1(NMHDR* pNMHDR, LRESULT* pResult){// TODO: Add your control notification handler code hereSetvolumn(m_slider.GetPos());*pResult = 0;}添加声音设置函数如下DWORD CMp3Dlg::Setvolumn(DWORD vol){MCI_DGV_SETAUDIO_PARMS mcisetvolumn;mcisetvolumn.dwCallback=NULL;mcisetvolumn.dwItem=MCI_DGV_SETAUDIO_VOLUME;mcisetvolumn.dwValue=vol;MCI_OPEN_PARMS mciopenparms;DWORD DeviceID;DeviceID=mciopenparms.wDeviceID;mciSendCommand(DeviceID,MCI_SETAUDIO,MCI_DGV_SETAUDIO_VALUE|MCI_DGV_SETAU DIO_ITEM,(DWORD)(LPVOID)&mcisetvolumn);// return mcisetvolumn.dwValue;return 0;}到此已经基本完成了,我们可以试听一下接下来我们可以到包成exe可执行文件,为了去掉那个不好看的图标,我们可以进入res文件夹,把原来的图标删掉,不过,你要放入一个cio格式的图片作为图标,cio格式网上有很多转换的,删掉原图标后,程序会自动生成一个你放进去的图标。

相关文档
最新文档