版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学习情境六多媒体的使用任务一创建OpenGL项目任务二创建音频播放器返回任务一创建OpenGL项目任务描述利用图形库创建一个三维彩色静止图像,用户可以通过菜单选项改变光源来改变显示效果。知识点详解OpenGL(OpenGraphicLibrary)是一个三维的计算机图形与模型库,是一个与硬件无关的编程接口,适用于多种平台及操作系统。在本任务中读者要学会如何使用OpenGL函数设置像素格式、添加光源、进行取景与投影变换,以及创建图像操作等。下一页返回任务一创建OpenGL项目在VisualStudio2010中需要配置OpenGL,即安装GLUT工具包,GLUT不是OpenGL所必需的,但它会给学习带来一定的方便,故推荐安装。Windows环境下GLUT的下载地址(大小约为150k):http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zipWindows环境下安装GLUT的步骤:(1)将下载的压缩包解开,将得到5个文件,分别是gluth、glut.lib、glut32.lib、glut.dll、glut32.dll(2)将其中的glut.h放到C:\ProgramFiles\MicrosoftSDKs\Windows\v7.0A\Include\gl,VisualStudio2010会自动搜索这个路径。上一页下一页返回任务一创建OpenGL项目(3)将glut.lib和glut32.lib复制到F:\vs2010\VC\lib,根据VisualStudio2010的具体安装路径确定。(4)将glut.dll和glut32.dll复制到C:\WINDOWS\system32下。至此,环境已经配置好了。完成步骤(1)启动VisualC++.NET2010,新建一个VisualC++项目,选用MFC模板,项目名称为ex06_01。(2)在应用程序向导的“应用程序类型”选项中选择“单文档”,单击“完成”按钮完成项目的建立。上一页下一页返回任务一创建OpenGL项目(3)为Cex06_1View类添加下述成员变量和成员函数(4)添加消息处理函数。在“类视图”窗口中,用鼠标右键单击Cex06_1View类,调出“属性”窗口,选择消息选项卡,为Cex06_1View类添加WM_CREATE消息处理函数OnCreate()。(5)同理,为Cex06_1View类添加WM_DESTROY消息处理函数OnDestroy()。(6)添加菜单。在“资源管理器”窗口中,双击“Menu”标签下的“IDR_MAIN⁃FRAME”项,调出菜单资源编辑器,创建如图6-1所示的菜单。上一页下一页返回任务一创建OpenGL项目(7)设置菜单属性。用鼠标右键单击菜单项,调出“属性”窗口,设置各菜单项的属性,见表6-1。(8)为菜单项添加事件处理函数。用鼠标右键单击菜单项,从弹出的菜单中选择“添加事件处理程序”项,调出“事件处理向导”窗口,在Cex06_1View类中添加下述消息映射函数,见表6-2。(9)变量初始化。在Cex06_1View类的构造函数中添加m_bLigth1和m_bLigth2的初始值,设m_bLigth1所控制的第一个光源默认情况为打开,m_bLigth2所控制的第二个光源为关闭。(10)为函数OnLight1()和OnLight2()添加代码,完成用户选择光源控制的功能。上一页下一页返回任务一创建OpenGL项目(11)编写start()函数,用于创建OpenGL显示函数。在这个函数中,定义结构体PIXELFORMATDESCRIPTOR,并设置像素格式和管理着色描述表。注意:在Cex06_1View.cpp文件中,需加入OpenGL函数库的导入。(12)调用start()函数。在Cex06_1View类的OnCreate()函数中加入创建OpenGL显示的函数。(13)编写end()函数。作为结束OpenGL显示的函数。在这个函数中,将删除着色描述表。(14)调用end()函数。在OnDestroy()函数中调用end()函数。上一页下一页返回任务一创建OpenGL项目(15)编写AddLight()函数,用于添加光源和材料属性。(16)编写EyePointchange()函数,用于取景变换和投影变换。(17)在OnDraw()函数中,调用EyePointchange()、AddLight()等函数。至此,程序编写完成,编译并运行它。上一页返回任务二创建音频播放器子任务1创建MP3音频播放器任务描述创建一个可以播放MP3音频文件的应用程序,当单击“打开”按钮会弹出“打开”对话框,从中选择要播放的音频文件。单击“播放”按钮即可播放选中的音频文件,单击“暂停”按钮即可暂停正在播放的音频文件,单击“停止”按钮即可停止正在播放的音频文件。程序运行后的效果如图6-2所示。下一页返回任务二创建音频播放器知识点详解媒体控制接口(MediaControlInterface,MCI)向Windows程序提供了在高层次上控制媒体设备接口的能力。程序不必关心具体设备,就可以对激光唱机(CD)、视盘机、波形音频设备、视频播放设备和MIDI设备等媒体设备进行控制。使用它需要在头文件中添加如下头文件:#include"windows.h"#include"mmsystem.h"#include"Digitalv.h"#pragmacomment(lib,"Winmm.lib")上一页下一页返回任务二创建音频播放器所有MCI命令消息都是通过mciSendCommand函数发送的,函数声明为:MCIERRORmciSendCommand(MCIDEVICEIDwDeviceID,
//设备的ID,在打开设备时不用该参数UINTuMsg,//命令消息DWORDfdwCommand,//命令消息的标志DWORDdwParam//指向包含命令消息参数的结构);//若成功则返回0,否则返回错误码变量wDeviceID用来保存设备的ID,系统用ID来标识不同的设备,以保证命令发给正确的对象。上一页下一页返回任务二创建音频播放器完成步骤(1)启动VisualC++.NET2010,新建一个VisualC++项目,选用MFC模板,项目名称为ex06_02。(2)在应用程序向导的“应用程序类型”选项中选择“基于对话框”,单击“完成”按钮完成项目的建立。(3)设计对话框界面如图6-3所示。(4)设计其属性,见表6-3。(5)为控件IDC_SLIDER1和IDC_EDIT1分别添加相关联的变量。打开类向导,设置如图6-4所示。上一页下一页返回任务二创建音频播放器(6)在对话框类CMP3PlayerDlg的头文件中添加如下变量的定义:CStringm_csInfo;//定义字符串类型的消息变量CStringstrFileName;//定义字符串类型的文件名变量WORDm_wDeviceID;//定义字类型的设备编号变量unsignedlongm_dLength;//定义无符号长整形的文件长度BOOLIsPause;//定义布尔类型的是否暂停变量上一页下一页返回任务二创建音频播放器(7)为“打开”按钮添加单击事件代码,完成打开文件对话框的功能:voidCM3PlayerDlg::OnOpen(){charszFileFilter[]="AllMusicFiles(*.*)|*.*||";CFileDialogFileOpenDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFil⁃ter);if(FileOpenDlg.DoModal()==IDOK){strFileName=FileOpenDlg.GetFileName();上一页下一页返回任务二创建音频播放器GetDlgItem(IDC_INFO)->SetWindowText("你选择的歌曲是:"+str⁃FileName);GetDlgItem(IDC_PLAY)->EnableWindow(TRUE);}}(8)为“播放”按钮添加单击事件代码,完成播放已经打开的MP3文件的功能:voidCM3PlayerDlg::OnPlay(){GetDlgItem(IDC_PAUSE)->EnableWindow(TRUE);GetDlgItem(IDC_STOP)->EnableWindow(TRUE);上一页下一页返回任务二创建音频播放器(9)为“停止”按钮添加单击事件代码,完成停止正在播放的MP3文件的功能:voidCM3PlayerDlg::OnStop(){mciSendCommand(m_wDeviceID,MCI_STOP,0,NULL);}(10)为“暂停”按钮添加单击事件代码,完成暂停正在播放的MP3文件的功能:voidCM3PlayerDlg::OnPause(){if(IsPause)上一页下一页返回任务二创建音频播放器{IsPause=false;//IsPause表达的意思是应该要暂停,可以暂停,即正在播放音乐文件MCI_GENERIC_PARMSmciPause;mciSendCommand(m_wDeviceID,MCI_PAUSE,0,(DWORD)(LPVOID)&mciPause);this->SetWindowText("您欣赏的音乐已经暂停,如需继续,请按Pause/Resume键");}else上一页下一页返回任务二创建音频播放器{IsPause=true;MCI_STATUS_PARMSmciStatusParms;MCI_PLAY_PARMSmciPlayParms;mciStatusParms.dwItem=MCI_STATUS_POSITION;mciSendCommand(m_wDeviceID,MCI_STATUS,MCI_STATUS_ITEM,(DWORD)(LPVOID)&mciStatusParms);mciPlayParms.dwFrom=mciStatusParms.dwReturn;//Play的成员变上一页下一页返回任务二创建音频播放器量里用dwFrom来标识从那里开始播放音频文件mciSendCommand(m_wDeviceID,MCI_RESUME,0,(DWORD)(LPVOID)&mciPlayParms);}}(11)为滑块添加单击消息NM_CUSTOMDRAW代码,完成通过滑块滑动调整音量的功能:voidCM3PlayerDlg::OnCustomdrawSlider2(NMHDR*pNMHDR,LRESULT*pRes⁃ult){上一页下一页返回任务二创建音频播放器UpdateData(true);m_int=m_slider.GetPos();MCI_DGV_SETAUDIO_PARMSsetvolume;//这是设置音量的参数数据结构setvolume.dwCallback=NULL;setvolume.dwItem=MCI_DGV_SETAUDIO_VOLUME;//动作是设置音量setvolume.dwValue=m_slider.GetPos();//音量值是volmciSendCommand
上一页下一页返回任务二创建音频播放器(m_wDeviceID,MCI_SETAUDIO,MCI_DGV_SETAUDIO_ITEM|MCI_DGV_SETAUDIO_VALUE,(DWORD)(LPVOID)&setvolume);UpdateData(false);*pResult=0;}至此,程序编写完成,编译并运行它。上一页下一页返回任务二创建音频播放器子任务2创建WindowsMediaPlayer音频播放器任务描述创建一个WindowsMediaPlayer音频播放器,类似于Windows自带的播放器。当单击“打开”按钮时会弹出“打开”对话框,从中选择要播放的音频文件。单击“播放”按钮即可播放选中的音频文件,单击“暂停”按钮即可暂停正在播放的音频文件,单击“停止”按钮即可停止正在播放的音频文件。还可以通过单击“快退”“快进”按钮调整播放进度,通过单击“音量小”“音量大”按钮调整音量的大小。程序运行后的效果如图6-5所示。上一页下一页返回任务二创建音频播放器知识点详解可视动画控件ActiveMovie是微软公司开发的ActiveX控件,它非常类似Windows附件中自带的媒体播放器。完成步骤(1)启动VisualC++.NET2010,新建一个VisualC++项目,选用MFC模板,项目名称为ex06_03。(2)在应用程序向导的“应用程序类型”选项中选择“基于对话框”,单击“完成”按钮完成项目的建立。(3)在对话框上,用鼠标右键选择“插入ActiveX控件”,在弹出的框中选择“WindowsMediaPlayer”,对话框界面如图6-6所示。上一页下一页返回任务二创建音频播放器(4)为ActiveX控件添加相应的类。先关闭对话框资源,在解决方案资源管理器中,单击“项目”→“添加类”→“ActiveX控件中的MFC类,弹出对话框,如图6-7所示。这里添加了所有的类,当然可以根据实际情况选择。(5)拖放控件,设计对话框界面,如图6-8所示。(6)设计其属性,见表6-4。(7)为控件添加变量。在添加成员变量向导中,分别为以上控件添加变量,以“打开”按钮为例,为其添加变量m_Open,如图6-9所示。上一页下一页返回任务二创建音频播放器(8)同理,为“播放”“暂停”“停止”“快退”“快进”“音量小”“音量大”“全屏”等按钮添加变量分别为m_play、m_pause、m_stop、m_prev、m_next、m_vsub、m_add、m_fullScreen,为进度条管理变量m_progress。(9)在ex06_3Dlg.h文件中添加头文件CWMPPlayer4.h,然后声明控件对象。在类视图中打开ex06_3Dlg.h文件,在开头处导入头文件,并对加入对CWMPPlayer4对象的声明:#include"CWMPPlayer4.h"CButtonm_Open1;CWMPPlayer4m_Player;
//播放地址关联上一页下一页返回任务二创建音频播放器CWMPControlsm_control;//控制按钮关联CWMPSettingsm_setting;//设置按钮关联CWMPMediam_media;//媒体CProgressCtrlm_progress;//进度条(10)手动关联控件。在ex06_3Dlg.cpp文件的DoDataExchange函数中加入WindowsMediaPlayer控件以及进度条控件与变量的关联:voidCex06_3Dlg::DoDataExchange(CDataExchange*pDX){CDialogEx::DoDataExchange(pDX);DDX_Control(pDX,IDC_OPEN,m_Open1);DDX_Control(pDX,IDC_OCX1,m_Player);上一页下一页返回任务二创建音频播放器DDX_Control(pDX,IDC_PROGRESS1,m_progress);}(11)为窗体添加OnTimer事件,编写对应事件函数的代码,完成进度条动态显示的功能:voidCWinPlayerDlg::OnTimer(UINT_PTRnIDEvent){//TODO:在此添加消息处理程序代码和/或调用默认值if(nIDEvent!=1)return;m_progress.SetPos(m_progress.GetPos()+1);CDialogEx::OnTimer(nIDEvent);}上一页下一页返回任务二创建音频播放器(12)为MediaPlayer添加播放改变PlayStateChange事件,编写对应的事件代码,完成根据播放状态调整进度条的功能:voidCWinPlayerDlg::PlayStateChangeOcx1(longNewState){//TODO:在此处添加消息处理程序代码if(NewState==3)
//播放状态时,开启定时器SetTimer(1,1000,NULL);elseif(NewState==1)//停止时,关闭定时器,进度条回0上一页下一页返回任务二创建音频播放器{m_progress.SetPos(0);KillTimer(1);}elseKillTimer(1);}(13)为“打开”按钮添加代码,完成打开音频文件的功能:voidCWinPlayerDlg::OnBnClickedOpen(){//TODO:在此添加控件通知处理程序代码CStringfileName;上一页下一页返回任务二创建音频播放器(14)为“播放”按钮添加代码,完成播放音频文件的功能:voidCWinPlayerDlg::OnBnClickedPlay(){m_control.play();
//播放}(15)为“暂停”按钮添加代码,完成暂停播放音频文件的功能:voidCWinPlayerDlg::OnBnClickedPause(){m_control.pause();
//暂停}上一页下一页返回任务二创建音频播放器(16)为“停止”按钮添加代码,完成停止播放音频文件的功能:voidCWinPlayerDlg::OnBnClickedStop(){m_control.stop();
//停止}(17)为“快退”按钮添加代码,完成播放音频文件快退的功能:voidCWinPlayerDlg::OnBnClickedPrev(){
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届广西桂林中学高三年级第二次教学质量检查考试化学试题含解析
- 2026一年级下册语文我的好朋友写话课件
- 苏州高新区实验初级中学2026届高三3月高考一模化学试题含解析
- 上海市华东师范大学第一附属中学2026年高三4月考-化学试题试卷含解析
- 2026一年级下册语文口语交际专项课件
- 奥迪购车空白合同模板(2篇)
- 安装滴灌带合同模板(2篇)
- 机器翻译与自然语言处理指导书
- 员工绩效考核指标体系
- 亲子沟通:加强家校联系的小学主题班会课件
- 氩气安全技术说明书MSDS
- 银行保安服务投标方案(完整技术标)
- 拒绝文身主题班会课件
- 北京版八年级数学下册全册课件【完整版】
- 小鸟科技拼接处理器产品
- 汽车行走的艺术学习通课后章节答案期末考试题库2023年
- 常微分方程一阶微分方程的初等解法公开课一等奖市赛课获奖课件
- 上海市临检中心 临床微生物学检验新技术及质量控制学习班课件 微生物检验新技术、新趋势
- GB/T 21144-2023混凝土实心砖
- 颈椎病的正骨推拿治疗
- 电力公司公开招聘报名表
评论
0/150
提交评论