版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
用VC++编写音乐播放器实现基本功能,即可以实现音乐的播放、暂停、停止;为播放器添加一个播放列表框;实现上一曲、下一曲的功能。最终功能如下图所示。基本功能的实现本例需要用到MCIWnd类;用该类实现音乐类型文件各种功能的基本步骤MCIWnd类MCI,是MediaControlInterface的简写,也就是多媒体控制接口.它提供一组标准的命令,用来播放多媒体设备和记录多媒体资源;MCIWnd是一个控制多媒体设备的基于MCI的窗口类,要制作多媒体封面只需创建该类的一个窗口,然后向它发送打开和控制MCI设置的消息。MCIWnd窗口底部的播放条(Playbar)包括一个播放/暂停(Play/Pause)按键、一个显示菜单(menu)按键和一个用于报告播放进程的标尺。在播放窗口的任何地方单击鼠标右键都会显示一个弹出菜单,用于调整MCIWnd窗口的大小、MCI多媒体文件的声音、速度的大小、MCI命令等。注意:MCIWnd并不属于MFC,因此不能从MCIWnd派生类。MCIWnd类的基本函数(1)MCIWndCreate(hwndParent,hInstance,dwStyle,szFile)用于创建MCIWnd类的窗口;hwndParent为父窗口句柄(拥有MCIWnd的窗口)hInstance是程序句柄(通常可以利用AfxGetInstanceHandle()获得程序句柄)dwStyle定义了MCIWnd的窗口类型szFile是供播放的MCI文件名,可以是MCI支持的各种类型文件,可以为NULL。MCIWndCreate()返回MCIWnd的窗口句柄,用于其他MCIWnd函数。注意:每次播放都要调用此函数打开设备,结束后要调MCIWndDdetroy (hWnd)关闭设备。
MCIWnd类的基本函数(2)dwStyle的类型:1.MCIWNDF_常量MCIWNDF_NOAUTOSIZEWINDOW
MCIWNDF_NOPLAYBAR
MCIWNDF_NOAUTOSIZEMOVIE
MCIWNDF_NOMENU
MCIWNDF_SHOWNAME
MCIWNDF_SHOWPOS
MCIWNDF_SHOWMODE
MCIWNDF_SHOWALL
2.WS_窗口类型常量,缺省为WS_CHILD|
WS_BORDER|WS_VISIBLEMCIWnd类的基本函数(3)所有这些函数都使用创建(MCIWndCreate)时获取的HWND句柄作为参数,返回一个long的值,0代表成功,其它为错误码;MCIWndPlay(hWnd)开始从文件开头播放,其参数hWnd为MCIWnd类的一个窗口句柄,也就是MCIWndCreate函数返回的值;MCIWndPause(hWnd)实现暂停功能;MCIWndHome(hWnd)返回至起始位置;MCIWndResume(hwnd)暂停后继续播放;MCIWndStop(hWnd)停止播放;MCIWndDdetroy(hWnd)该函数向窗口发送WM_CLOSE消息,窗口接收到该消息之后,关闭所打开的MCI文件,并关闭窗口。工程的建立建立基于对话框的工程在对话框中添加6个按钮,其ID分别为打开文件(IDC_OPENFILES),播放(IDC_PLAY_BUTTON),暂停(IDC_PAUSE_BUTTON),停止(IDC_STOP_BUTTON),上一曲(IDC_PREVIOUS_TRACK),下一曲(IDC_NEXT_TRACK);以及静态文本(播放状态等);为打开、播放、暂停、停止四个按钮关联CButton类的变量,如下图所示;为每个按钮建立对应的消息函数:OpenFiles(),OnPlay(),OnPause(),OnStop();1.为了调用MCIWnd的函数,先要在主文件中加入“vfw.hvfw.h”,并打开菜单Project->Settings,打开Link选项卡在object/librarymodelsy一栏中加入“VFW32.lib”,参看下图;2.在构造函数中加入以下几个变量
HWNDm_PreAudio,m_Audio; boolm_IsPaused,m_IsOpened; 前两个变量用来存储MCIWndCreate返回的窗口句柄,初始值为NULL;后两者分别用来记录文件的播放与暂停状态,初始值分别为true与false; 3.加入两个CString类的外部变量PathName,FileName用于在打开文件时保存路径及文件名;4.在InitDialog()中初始化上述变量,以及按钮的关联变量,使下列3个按钮无效:m_PlayButton.EnableWindow(false);m_PauseButton.EnableWindow(false);m_StopButton.EnableWindow(false);
OpenFiles函数作用:打开特定格式的文件实例化CFileDialog
类的一个对象CFileDialog
FileOpenDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter,CWnd*pointer); TRUE表示建立一个打开文件的对话框,若为FALSE则表示建立“文件保存为”的对话框;第五个变量指定了过滤的文件类型,本例可以将其设为Mp3格式,即“Mp3File(*.mp3)|*.mp3|”,其他参看MSDN;该函数的原型为 CFileDialog(
BOOL
bOpenFileDialog,
LPCTSTR
lpszDefExt
=
NULL,
LPCTSTR
lpszFileName
=
NULL,
DWORD
dwFlags
=
OFN_HIDEREADONLY
|
OFN_OVERWRITEPROMPT,
LPCTSTR
lpszFilter
=
NULL,
CWnd*
pParentWnd
=
NULL
);
将获取到的文件名及路径赋给外部变量FileName和PathName,以备下面使用;PathName.Format("%s",FileOpenDlg.GetPathName());FileName.Format("%s",FileOpenDlg.GetFileName());
OnPlay()为了避免出现两首歌曲同时播放的现象,我们先判断是否已经有歌曲在播放:是,则停止播放该文件,然后再播放新的文件;否,则直接播放文件;实现上述功能的基本方法:每次创建MCIWnd窗体时,将返回值同时付给m_PreAudio,m_Audio;具体代码如下:
if(m_Audio==NULL) { m_Audio=m_PreAudio=MCIWndCreate(this->GetSafeHwnd(), AfxGetInstanceHandle(), WS_CHILD|WS_VISIBLE|MCIWNDF_NOMENU,PathName); CStringstr; str.Format("正在播放:%s",FileName); SetDlgItemText(IDC_STATUS_STATIC,str); m_IsOpened=true; } else { MCIWndHome(m_Audio); }
MCIWndPlay(m_Audio);m_IsPaused=false;OnPause()首先判断是否已经暂停,即m_IsPaused的值,是则按该按钮继续播放,否则执行暂停操作;具体代码如下:if(m_IsPaused) { //MCIWndResume(m_Audio); str.Format("正在播放:%s",FileName); SetDlgItemText(IDC_STATUS_STATIC,str); //m_IsPaused=false; } else { MCIWndPause(m_Audio); m_IsPaused=true; str.Format("已暂停播放:%s",FileName); SetDlgItemText(IDC_STATUS_STATIC,str); }OnStop()按停止按钮直接调用MCIWndStop函数停止播放音乐,并且为了避免下次播放出现混音现象,要调用MCIWndDestroy关闭设备;具体代码如下:MCIWndStop(m_Audio);//if(m_Audio!=NULL)//{ MCIWndDestroy(m_Audio); SetDlgItemText(IDC_STATUS_STATIC,“停止播放......");//}OnPlay()的修正编写上述程序,编译、运行,会发现在播放一首歌曲的时候,再播放其他歌曲,这时会变得很混乱,多首歌曲同时播放;这是我们可以用到m_PreAudio了;先判断m_IsOpened的值,如m_IsOpened的值为true,表示有歌曲正在播放,因此要先停止该设备;OnPlay()的修正if(m_IsOpened==true){ MCIWndStop(m_PreAudio); MCIWndDestroy(m_PreAudio);}从播放列表实现文件的播放首先须添加一ListBox(列表框),注意将其属性中的styles的selection改为single,即每次只能选中一个列表项;为列表框关联CListBox类的变量m_PlayList;每次打开文件时都自动将文件添加到列表中,代码如下:if(m_PlayList.FindStringExact(-1,FileName)==LB_ERR){ m_PlayList.AddString(FileName);}m_PlayList.SetCurSel(m_PlayList.FindStringExact(-1,FileName));说明:第一个函数查找在列表框中是否存在相同项(参数一为起始位置的索引,参数二为查找的项目),是则返回该列表的索引(从零开始),否则返回LB_ERR;第二个函数用于用于加载列表项;第三个函数使被选项处于高亮度显示状态,其参数为被选项的索引;CListBox相关函数原型int
FindStringExact(
int
nIndexStart,
LPCTSTR
lpszFind
)
const;int
AddString(
LPCTSTR
lpszItem
);int
SetCurSel(
int
nSelect
);
int
GetSelCount(
)
const;
int
GetCaretIndex(
)
const;intGetCurSel()const;此两函数功能相似,均为获取当前选择项的索引;intGetText(intnIndex,LPTSTRlpszBuffer)const;
int
GetCount(
)
const;OnDblclkList()添加消息处理函数LBN_DBCLICK,函数名为 OnDblclkList();通过该函数实现双击列表项播放文件的功能;在该函数中直接调用播放函数Play();双击功能的修正上述工作完成之后,出现一个问题,当列表中有多项时,双击只能播放最后加到列表中的一首,这是因为:每次使用OpenFiles()打开文件时,FileName与PathName均被赋新值,因此在播放Play()时,播放的是最后一次的PathName;解决方法:在Play()函数中,添加如下代码:双击功能的修正if(m_PlayList.GetSelCount()==LB_ERR)//得到被选择项的项目总数{ 对于单选择的列表框返回LB_ERR intnIndex;CStringstr;nIndex=m_PlayList.GetCaretIndex();//得到当前选择项的索引m_PlayList.GetText(nIndex,str);//获取文本,本例即文件名,赋给str
CFileFindFileFind; //实例化CFileFind类的对象FileFind.FindFile(str,0);//打开文件搜索FileFind.FindNextFile();//检查所找到的是否唯一,否,返回非零PathName=FileFind.GetFilePath();//返回找到文件的路径m_IsOpened=true;FileName=str;}CFileFind类的相关函数virtualBOOLFindFile(LPCTSTRpstrName=NULL,DWORDdwUnused=0);virtualBOOLFindNextFile();
virtualCStringGetFilePath()const;
这三个函数中,前两个函数必须依次序同时调用,且FindNextFile()在FindFile()之后;
GetFilePath()函数调用之前必须先至少一次调用FindNextFile();上一曲及下一曲功能的实现实现上一曲的思路是:当点击该按钮时,被选项由当前位置移至上一位,并且高亮度显示,然后调用OnPlay()函数即可;下一曲的思路与此相似;上一曲首先添加消息处理函数OnPreviousTrack()具体代码如下: //TODO:Addyourcontrolnotificationhandlercodehere intnIndex;CStringstr; nIndex=m_PlayList.GetCaretIndex(); if(nIndex==0) { m_PreTrack.EnableWindow(false); AfxMessageBox("已经是第一项,请重新选择歌曲!"); m_PreTrack.EnableWindow(true); } else {
nIndex-=1; m_PlayList.SetCurSel(nIndex); OnPlay(); }下一曲首先添加消息处理函数OnNextTrack()具体代码如下:intnIndex;CStringstr;intlength;nIndex=m_PlayList.GetCurSel();nIndex+=1;length=m_PlayList.GetCount();//获取当前列表项数if(nIndex==length) //判断是否为最后一首 m_PlayList.SetCurSel(0);else m_PlayList.SetCurSel(nIndex);OnPlay();第一节活塞式空压机的工作原理第二节活塞式空压机的结构和自动控制第三节活塞式空压机的管理复习思考题单击此处输入你的副标题,文字是您思想的提炼,为了最终演示发布的良好效果,请尽量言简意赅的阐述观点。第六章活塞式空气压缩机
piston-aircompressor压缩空气在船舶上的应用:
1.主机的启动、换向;
2.辅机的启动;
3.为气动装置提供气源;
4.为气动工具提供气源;
5.吹洗零部件和滤器。
排气量:单位时间内所排送的相当第一级吸气状态的空气体积。单位:m3/s、m3/min、m3/h第六章活塞式空气压缩机
piston-aircompressor空压机分类:按排气压力分:低压0.2~1.0MPa;中压1~10MPa;高压10~100MPa。按排气量分:微型<1m3/min;小型1~10m3/min;中型10~100m3/min;大型>100m3/min。第六章活塞式空气压缩机
piston-aircompressor第一节活塞式空压机的工作原理容积式压缩机按结构分为两大类:往复式与旋转式两级活塞式压缩机单级活塞压缩机活塞式压缩机膜片式压缩机旋转叶片式压缩机最长的使用寿命-
----低转速(1460RPM),动件少(轴承与滑片),润滑油在机件间形成保护膜,防止磨损及泄漏,使空压机能够安静有效运作;平时有按规定做例行保养的JAGUAR滑片式空压机,至今使用十万小时以上,依然完好如初,按十万小时相当于每日以十小时运作计算,可长达33年之久。因此,将滑片式空压机比喻为一部终身机器实不为过。滑(叶)片式空压机可以365天连续运转并保证60000小时以上安全运转的空气压缩机1.进气2.开始压缩3.压缩中4.排气1.转子及机壳间成为压缩空间,当转子开始转动时,空气由机体进气端进入。2.转子转动使被吸入的空气转至机壳与转子间气密范围,同时停止进气。3.转子不断转动,气密范围变小,空气被压缩。4.被压缩的空气压力升高达到额定的压力后由排气端排出进入油气分离器内。4.被压缩的空气压力升高达到额定的压力后由排气端排出进入油气分离器内。1.进气2.开始压缩3.压缩中4.排气1.凸凹转子及机壳间成为压缩空间,当转子开始转动时,空气由机体进气端进入。2.转子转动使被吸入的空气转至机壳与转子间气密范围,同时停止进气。3.转子不断转动,气密范围变小,空气被压缩。螺杆式气体压缩机是世界上最先进、紧凑型、坚实、运行平稳,噪音低,是值得信赖的气体压缩机。螺杆式压缩机气路系统:
A
进气过滤器
B
空气进气阀
C
压缩机主机
D
单向阀
E
空气/油分离器
F
最小压力阀
G
后冷却器
H
带自动疏水器的水分离器油路系统:
J
油箱
K
恒温旁通阀
L
油冷却器
M
油过滤器
N
回油阀
O
断油阀冷冻系统:
P
冷冻压缩机
Q
冷凝器
R
热交换器
S
旁通系统
T
空气出口过滤器螺杆式压缩机涡旋式压缩机
涡旋式压缩机是20世纪90年代末期开发并问世的高科技压缩机,由于结构简单、零件少、效率高、可靠性好,尤其是其低噪声、长寿命等诸方面大大优于其它型式的压缩机,已经得到压缩机行业的关注和公认。被誉为“环保型压缩机”。由于涡旋式压缩机的独特设计,使其成为当今世界最节能压缩机。涡旋式压缩机主要运动件涡卷付,只有磨合没有磨损,因而寿命更长,被誉为免维修压缩机。
由于涡旋式压缩机运行平稳、振动小、工作环境安静,又被誉为“超静压缩机”。
涡旋式压缩机零部件少,只有四个运动部件,压缩机工作腔由相运动涡卷付形成多个相互封闭的镰形工作腔,当动涡卷作平动运动时,使镰形工作腔由大变小而达到压缩和排出压缩空气的目的。活塞式空气压缩机的外形第一节活塞式空压机的工作原理一、理论工作循环(单级压缩)工作循环:4—1—2—34—1吸气过程
1—2压缩过程
2—3排气过程第一节活塞式空压机的工作原理一、理论工作循环(单级压缩)
压缩分类:绝热压缩:1—2耗功最大等温压缩:1—2''耗功最小多变压缩:1—2'耗功居中功=P×V(PV图上的面积)加强对气缸的冷却,省功、对气缸润滑有益。二、实际工作循环(单级压缩)1.不存在假设条件2.与理论循环不同的原因:1)余隙容积Vc的影响Vc不利的影响—残存的气体在活塞回行时,发生膨胀,使实际吸气行程(容积)减小。Vc有利的好处—
(1)形成气垫,利于活塞回行;(2)避免“液击”(空气结露);(3)避免活塞、连杆热膨胀,松动发生相撞。第一节活塞式空压机的工作原理表征Vc的参数—相对容积C、容积系数λv合适的C:低压0.07-0.12
中压0.09-0.14
高压0.11-0.16
λv=0.65—0.901)余隙容积Vc的影响C越大或压力比越高,则λv越小。保证Vc正常的措施:余隙高度见表6-1压铅法—保证要求的气缸垫厚度2.与理论循环不同的原因:二、实际工作循环(单级压缩)第一节活塞式空压机的工作原理2)进排气阀及流道阻力的影响吸气过程压力损失使排气量减少程度,用压力系数λp表示:保证措施:合适的气阀升程及弹簧弹力、管路圆滑畅通、滤器干净。λp
(0.90-0.98)2.与理论循环不同的原因:二、实际工作循环(单级压缩)第一节活塞式空压机的工作原理3)吸气预热的影响由于压缩过程中机件吸热,所以在吸气过程中,机件放热使吸入的气体温度升高,使吸气的比容减小,造成吸气量下降。预热损失用温度系数λt来衡量(0.90-0.95)。保证措施:加强对气缸、气缸盖的冷却,防止水垢和油污的形成。2.与理论循环不同的原因:二、实际工作循环(单级压缩)第一节活塞式空压机的工作原理4)漏泄的影响内漏:排气阀(回漏);外漏:吸气阀、活塞环、气缸垫。漏泄损失用气密系数λl来衡量(0.90-0.98)。保证措施:气阀的严密闭合,气缸与活塞、气缸与缸盖等部件的严密配合。5)气体流动惯性的影响当吸气管中的气流惯性方向与活塞吸气行程相反时,造成气缸压力较低,气体比容增大,吸气量下降。保证措施:合理的设计进气管长度,不得随意增减进气管的长度,保证滤器的清洁。2.与理论循环不同的原因:二、实际工作循环(单级压缩)第一节活塞式空压机的工作原理上述五条原因使实际与理论循环不同。4)漏泄的影响5)气体流动惯性的影响1)余隙容积Vc的影响2)进排气阀及流道阻力的影响3)吸气
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 车间设备维护与保养计划制定方法
- 人才招聘渠道及评估策略
- 高考语文历年真题及解题技巧
- 高考英语复习备考计划方案
- 银行保洁服务方案
- 幼儿园亲子互动雪花片手工教学设计
- 2025年中考英语真题试题
- 设备切换与盘车维护管理办法
- 道路施工现场环境保护措施
- 语文教师教学反思与改进方案
- 职业卫生与防护
- 工业机器人技术与应用PPT完整全套教学课件
- dd5e人物卡可填充格式角色卡夜版
- JJG 573-2003膜盒压力表
- GB/T 19247.4-2003印制板组装第4部分:分规范引出端焊接组装的要求
- GB/T 17457-2019球墨铸铁管和管件水泥砂浆内衬
- GB/T 10156-2009水准仪
- 计算机网络技术说课课件
- 万科施工图设计任务书
- Q∕SY 17001-2016 泡沫排水采气用消泡剂技术规范
- 物控作业指导书
评论
0/150
提交评论