零基础制作简易播放器资料

上传人:今*** 文档编号:108279753 上传时间:2019-10-23 格式:DOC 页数:9 大小:270.50KB
返回 下载 相关 举报
零基础制作简易播放器资料_第1页
第1页 / 共9页
零基础制作简易播放器资料_第2页
第2页 / 共9页
零基础制作简易播放器资料_第3页
第3页 / 共9页
零基础制作简易播放器资料_第4页
第4页 / 共9页
零基础制作简易播放器资料_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《零基础制作简易播放器资料》由会员分享,可在线阅读,更多相关《零基础制作简易播放器资料(9页珍藏版)》请在金锄头文库上搜索。

1、VC+程序设计实验报告专业:11级医药软件开发 班级: 2班 学号: 11712076 姓名: 刘名奎 日期: 2014-4-17 成绩: 一、 实验目的掌握MFC编程二、 实验内容用MFC向导创建基本对话框,添加相关组件,制作简单的音乐播放器,实现浏览歌曲文件,播放,暂停,停止,退出软件等功能。 三、 详细步骤:第一步:打开VC+6.0,创建MFC AppWizard(exe)工程,写上工程名称,单击“确定”。第二步:选择“基本对话框”,单击“完成”后“确定”,建立一个默认的对话框,将上面不必要的组件删除。第三步:建立一个如图所示的对话框,修改相关组件的属性。相关组件的ID如下:音乐名编辑框

2、:IDC_filename“浏览”按钮:IDC_filechoice“播放”按钮:IDC_play“暂停”按钮:IDC_pause“停止”按钮:IDC_stop音量编辑框:IDC_vol音量滑块:IDC_ SLIDER“版本说明”按钮:IDC_about“退出软件”按钮:IDC_exitbt其他组件的ID默认即可。注意:还有些样式及扩展样式可适当修改,以增加美观,在此就不一一叙述。第四步:按Ctrl+W,建立类向导。在Message Maps中建立相关组件的类向导,如下图。第五步:创建相关变量。右击CDlg,选择第四个Add Member Variable,如图相应的变量有:int m_int

3、 CSliderCtrl m_slider第六步:添加代码(FileView面板)。 主要是在Dlg.cpp文件中添加如下代码:#include Mmsystem.h#include Digitalv.h#pragma comment(lib,Winmm.lib)/定义三个全局变量HWND m_hWnd;DWORD DeviceID;MCI_OPEN_PARMS mciopenparms;void Load(HWND hWnd,CString strFilepath)m_hWnd=hWnd;mciSendCommand(DeviceID,MCI_CLOSE,0,0);/在加载文件前先清空上一次

4、播放的设备mciopenparms.lpstrElementName=strFilepath;/将音乐文件路径传给设备DWORD dwReturn;if(dwReturn=mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_ELEMENT|MCI_WAIT,(DWORD)(LPVOID)&mciopenparms)/如果打开文件失败,则将出错信息储存在buffer,并显示出错警告char buffer256;mciGetErrorString(dwReturn,buffer,256);MessageBox(hWnd,buffer,出错警告!,MB_ICONHAND|MB

5、_ICONERROR|MB_ICONSTOP);DeviceID=mciopenparms.wDeviceID;/打开文件成功就关联文件到设备void play()MCI_PLAY_PARMS mciplayparms;mciplayparms.dwCallback=(DWORD)m_hWnd;mciplayparms.dwFrom=0;/每次播放都是从0开始播放mciSendCommand(DeviceID,MCI_PLAY,MCI_FROM|MCI_NOTIFY,(DWORD)(LPVOID)&mciplayparms);void pause()mciSendCommand(DeviceI

6、D,MCI_PAUSE,0,0);void resume()mciSendCommand(DeviceID,MCI_RESUME,0,0);void stop()mciSendCommand(DeviceID,MCI_STOP,0,0);mciSendCommand(DeviceID,MCI_CLOSE,0,0);/当点击停止按钮时,将所有的信息都清除掉DWORD setvolume(DWORD vol)MCI_DGV_SETAUDIO_PARMS setvolume;/这是设置音量的参数数据结构setvolume.dwCallback=NULL;setvolume.dwItem=MCI_DG

7、V_SETAUDIO_VOLUME;/动作是设置音量setvolume.dwValue=vol;/音量值是volmciSendCommand(DeviceID,MCI_SETAUDIO,MCI_DGV_SETAUDIO_ITEM|MCI_DGV_SETAUDIO_VALUE,(DWORD)(LPVOID)&setvolume);return 0;BEGIN_MESSAGE_MAP(CMFCDlg, CDialog)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_about, Onabout)ON_BN_

8、CLICKED(IDC_exitbt, Onexitbt)ON_BN_CLICKED(IDC_filechoice, Onfilechoice)ON_BN_CLICKED(IDC_pause, Onpause)ON_BN_CLICKED(IDC_play, Onplay)ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER, OnCustomdrawSlider)ON_BN_CLICKED(IDC_stop, Onstop)END_MESSAGE_MAP()BOOL CMFCDlg:OnInitDialog().m_slider.SetRange(0,1000);/滑块的移动

9、范围01000m_slider.SetPos(500);/滑块指针的初始位置设为500代表初始音量为50GetDlgItem(IDC_play)-EnableWindow(false);/文件没有读取时所有按钮应是不可选的GetDlgItem(IDC_pause)-EnableWindow(false);GetDlgItem(IDC_stop)-EnableWindow(false);return TRUE; / return TRUE unless you set the focus to a controlvoid CMFCDlg:OnPaint() if (IsIconic()CPain

10、tDC 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 = (r

11、ect.Height() - cyIcon + 1) / 2;dc.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(&bi

12、tmap); CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground); dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);void CMFCDlg:Onabout() CAboutDlg dlg; dlg.DoModal();void CMFCDlg:Onexitbt() CDialog:OnCancel();void CMFCDlg:Onfilechoice() char szFileFilter=mp3

13、文件(*.mp3)|*.mp3| wma文件(*.wma)|*.wma|wav文件(*.wav)|*.wav|所有文件(*.*)|*.*|;CFileDialog dlg(true,NULL,NULL,OFN_HIDEREADONLY,szFileFilter);if(dlg.DoModal()=IDOK)CString strFilepath=dlg.GetPathName();CString strFilename=dlg.GetFileName();SetDlgItemText(IDC_filename,strFilename);Load(this-m_hWnd,strFilepath);GetDlgItem(IDC_play)-EnableWindow(true);/文件读取成功时所有按钮变可选的 GetDlgItem(IDC_pause)-EnableWindow(true); GetDlgItem(IDC_stop)-EnableWindow(true);void CMFCDlg:Onpause() CString strtemp; GetDlgItemText(IDC_pause,strtemp);/获取按钮状态 if(strtemp.Compare(暂停)=0) pause(); SetDlgItemText(IDC_pause,恢复); if(

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号