面向对象程序设计第九章-文件与WIN32-API函数_第1页
面向对象程序设计第九章-文件与WIN32-API函数_第2页
面向对象程序设计第九章-文件与WIN32-API函数_第3页
面向对象程序设计第九章-文件与WIN32-API函数_第4页
面向对象程序设计第九章-文件与WIN32-API函数_第5页
已阅读5页,还剩38页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向对象程序设计第九章文件与WIN32API函数再谈音乐播放第九章文件与WIN32API函数演示新控件:驱动器列表框DriveListBox目录列表框

DirListBox文件列表框

FileListBox关键技术:多窗体类编程第九章文件与WIN32API函数9.1打开音乐文件9.2向Form1列表框增加音乐9.3音乐播放界面设计9.4音乐播放类的编写9.5让程序记住窗体关闭前的位置9.1打开音乐文件界面设计控件NameCaption框架Frame1曲目列表列表框List1命令按纽Command1空字符串按纽设计技术:Style=1——设置Picture基本思路PrivateSubCommand1_Click()

‘显示打开文件的自定义对话框获取音乐路径

‘向列表框增加从自定义对话框获取的音乐路径EndSub9.1.1自定义对话框的设计添加窗体Form2Form2界面设计控件NameCaption驱动器列表框Drive1目录列表框Dir1文件列表框File1标签Label1选定的音乐标签Label2默认命令按纽Command1确定命令按纽Command2取消类文本框的标签设计:BorderStyle=1;BackColor为白色9.1.1自定义对话框的设计PrivateSubCommand1_Click()

‘显示打开文件的自定义对话框获取音乐路径‘向列表框增加从自定义对话框获取的音乐路径EndSub显示自定义对话框PrivateSubCommand1_Click()

Form2.Show

‘以非模式对话框显示,当Form2显示后就执行后面的代码‘向列表框增加从自定义对话框获取的音乐路径EndSubPrivateSubCommand1_Click()

Form2.Show1‘以模式对话框显示,当Form2关闭后才执行后面的代码‘向列表框增加从自定义对话框获取的音乐路径EndSub或应该选哪一种且听下文分解。9.1.2从自定义对话框返回音乐路径1、让Drive1、Dir1、File1同步2、在Label2中提示选中的文件3、让File1只显示音乐文件4、从自定义对话框返回音乐路径1、让Drive1、Dir1、File1同步驱动器列表框(类似于Style=2的组合框):Drive属性:当前选中驱动器名。Change()事件:Drive属性发生改变时探讨:在Form2中写入如下代码有何效果目录列表框(以目录树的方式显示路径):PrivateSubDrive1_Change()Dir1.Path=Drive1.Drive'设置目录列表框的PathEndSubPath属性:当前打开的文件夹的路径。1、让Drive1、Dir1、File1同步目录列表框(续):Change()事件:Path属性发生改变时。文件列表框(类似于列表框):Path属性(当前文件列表的父目录)FileName属性(当前选中的文件名)Pattern属性(限定文件类型的字符串如“*.jpg”、“*.jpg;*.tif”)让Dir1、File1同步:PrivateSubDir1_Change()File1.Path=Dir1.Path'设置文件列表框的PathEndSub2、在Label2中提示选中的文件文件列表框(续):PathChange()事件:当前Path改变时。Click()事件:鼠标单击文件项导致当前FileName改变时PatternChage事件():当前Pattern改变时在Label2中提示选定的文件:PrivateSubFile1_Click()Label2.Caption=File1.FileNameEndSubPrivateSubForm_Load()Label2.Caption=""EndSub3、让File1只显示音乐文件关键属性:Pattern实现思路:使用组合框Form2界面设计(续)控件NameCaption标签Label2音乐类型组合框Combo13、让File1只显示音乐文件向列表框增加音乐类型提示项PrivateSubForm_Load()………….

Combo1.AddItem"所有支持格式(*.mpg;*.mp3;*.wav;*.mid)"Combo1.AddItem"视频文件(*.mpg)"Combo1.AddItem"音频文件(*.mp3;*.wav;*.mid)"EndSubPrivateSubForm_Load()………….Combo1.AddItem"所有支持格式(*.mpg;*.mp3;*.wav;*.mid)"Combo1.AddItem"视频文件(*.mpg)"Combo1.AddItem"音频文件(*.mp3;*.wav;*.mid)"Combo1.ListIndex=0'初始选中项为第一项

File1.Pattern="*.mpg;*.mp3;*.wav;*.mid"

'因为初始选中项为第一项EndSub3、让File1只显示音乐文件探讨:怎样实现通过下拉框实时控制File1显示音乐文件的类型PrivateSubCombo1_Click()EndSub

SelectCaseCombo1.ListIndexCase0File1.Pattern="*.mpg;*.mp3;*.wav;*.mid"Case1File1.Pattern="*.mpg"CaseElseFile1.Pattern="**.mp3;*.wav;*.mid"

EndSelect4、从自定义对话框返回音乐路径探讨:Form2必须返回用户所选音乐的全路径,应该怎样实现呢?在Form2中定义一个字符串变量,专门存储所选音乐的全路径。这个变量是局部变量、模块级变量还是全局变量?该变量Form1必须可访问,因此是全局变量变量的值在Form2关闭后由Form1访问,但‘确定’和‘取消’按纽均要求窗体关闭,怎样让程序识别用户按的是哪个按纽?该变量初始值设为“”,在用户点击确定时才赋值4、从自定义对话框返回音乐路径代码设计PublicMusicAsString'Public变量,用于返回给Form1用户选定的音乐全路径PrivateSubForm_Load()……

Music=""

'初始化Public变量为空字符串EndSubPrivateSubCommand1_Click()'单击'确定'按纽

IfLabel2.Caption=""Then'表明用户未选择音乐文件

MsgBox"请选择一个音乐文件",vbOKOnly,"提示"ExitSubEndIf

Music=File1.Path+"\"+File1.FileName'设置全局变量值

UnloadMeEndSubPrivateSubCommand2_Click()'单击'取消'按纽

UnloadMeEndSub9.2向Form1列表框增加音乐悬念解决PrivateSubCommand1_Click()

Form2.ShowIfForm2.Music<>""ThenList1.AddItemForm2.MusicEndIfEndSubPrivateSubCommand1_Click()

Form2.Show1IfForm2.Music<>""ThenList1.AddItemForm2.MusicEndIfEndSubPrivateSubCommand1_Click()Form2.Show‘或Form2.Show1

‘获取Form2的Music,向列表框增加音乐EndSub9.3音乐播放界面设计界面设计(续)控件Name说明标签Label1当前曲目标签Label2命令按纽Command3播放按纽命令按纽Command4停止按纽9.4音乐播放类的编写思路回顾(第七章的代码设计)PrivateMusicIndexAsIntegerPrivateSubForm_Load()MusicIndex=-1‘初始置为-1,表示无音乐EndSubPrivateSubCommand3_Click()IfList1.ListIndex=-1ThenExitSubText1.Text=List1.List(List1.ListIndex)

mciSendString"stop"+List1.List(MusicIndex),0,0,0mciSendString"close"+List1.List(MusicIndex),0,0,0MusicIndex=List1.ListIndexmciSendString"open"+List1.List(MusicIndex),0,0,0mciSendString"play"+List1.List(MusicIndex)+"from"+"0",0,0,0EndSub9.4音乐播放类的编写9.4.1mciSendString函数的来历9.4.2建立音乐播放类9.4.3使用音乐播放类9.4.1mciSendString函数的来历实质:Win32API函数Win32API:C语言编写的函数库dllWindows内核库:Kernel32.dllWindows用户界面管理库:User32.dllWindows图形设备界面库:Gdi32.dllWindows多媒体库:Winmm.dllVB也可调用,但需要在模块声明部分事先声明例如:PublicDeclareFunctionmciSendStringLib"winmm.dll"Alias"mciSendStringA"(ByVallpstrCommandAsString,ByVallpstrReturnStringAsString,ByValuReturnLengthAsLong,ByValhwndCallbackAsLong)AsLong9.4.1mciSendString函数的来历Win32API声明的一般格式Public\PrivateFunction函数名Lib“库名”(参数列表)_As类型Public\PrivateSub过程名Lib“库名”(参数列表)函数名或过程名可自定义,但必须在库名后跟上Alias“真名”。PublicDeclareFunctionmciSendStringLib"winmm.dll"Alias"mciSendStringA"(ByVallpstrCommandAsString,ByVallpstrReturnStringAsString,ByValuReturnLengthAsLong,ByValhwndCallbackAsLong)AsLong9.4.1mciSendString函数的来历拷贝mciSendString函数的声明外接程序>>外接程序管理器>>双击“VB6APIViewer”>>出现‘加载’>>确定外接程序>>API浏览器文件>>加载文本文件文件>>加载文本文件>>选择WIN32API键入mciSendString进行搜索,并确定公有或私有9.4.2建立音乐播放类1、回顾狗类2、从狗类到音乐类3、音乐类属性的设置4、音乐类方法的设置5、让类自己管理自己1、回顾狗类回顾新建一类模块,修改名称为Dog,书写下代码:PublicSexAsBooleanPubliccolorAsLongPrivateAgeAsIntegerPublicSubRun()MsgBox"跑马遛溜的山上"EndSubPublicSubBeat()MsgBox"汪....汪...汪....."EndSub属性(模块级、全局级变量)方法(模块级、全局级过程)狗属性颜色年龄性别方法跑咬人2、从狗类到音乐类探讨:自定义类MusicPlay应该具有播放音乐和停止播放的功能,根据功能,应设计哪些属性和方法MusicPlay属性音乐全路径方法播放停止仅供参考`探讨:音乐全路径属性最好设置为可读可写、只读还是只写?音乐路径不能被随意更改,如果在播放中更改了路径停止该音乐时会出错,最好设置为可读。PrivateMusicPathAsStringPublicPropertyGetMusic()AsStringMusic=MusicPath'读属性EndPropertyPublicPropertyLetMusic(MusicFullNameAsString)MusicPath=MusicFullName'写属性EndProperty3、音乐类属性的设置在“播放”方法中设置路径参数,在调用播放方法时用户必须给出音乐路径,可在此设置属性值。探讨:音乐全路径属性设置为只读,怎样设置其值呢?4、音乐类方法的设置代码设计MusicPlay属性音乐全路径方法播放停止PublicSubStopMusic()EndSubPublicSubPlayMusic(ByValFullNameAsString)

EndSub

mciSendString"stop"+MusicPath,0,0,0'停止播放

mciSendString“close”+MusicPath,0,0,0‘关闭设备

MusicPath=""StopMusic'调用自定义过程,先停止正在播放的音乐

mciSendString"open"+FullName,0,0,0'打开音乐

mciSendString"play"+FullName+"from"+"0",0,0,0

'开始播放"

MusicPath=FullName

'设置只读属性值4、音乐类方法的设置在类的声明部分对mciSendString函数进行声明(使用Win32API浏览器)5、让类自己管理自己回顾:退出时关闭音乐(第七章的代码设计)PrivateSubCommand2_Click()UnloadMeEndSubPrivateSubForm_Unload(CancelAsInteger)mciSendString"stop"+List1.List(MusicIndex),0,0,0mciSendString"close"+List1.List(MusicIndex),0,0,0EndSub5、让类自己管理自己类的Terminate方法PrivateSub

Class_Terminate()StopMusic'在释放对象时停止其播放的音乐EndSub5、让类自己管理自己高级的话题:对象的初始化PrivateSubClass_Initialize()'在创建对象时执行

MusicPath=""EndSub9.4.3使用音乐播放类代码设计PrivateMyMusicAsPlayMusic'声明一个模块级PlayMusic类变量PrivateSubForm_Load()Label2.Caption=""'当前曲目提示为空

SetMyMusic=NewPlayMusic

'新建一个PlayMusic对象,并将地址赋给MyMusicEndSub9.4.3使用音乐播放类代码设计(续)PrivateSubCommand3_Click()

EndSubPrivateSubCommand4_Click()

EndSub

IfList1.ListIndex=-1ThenExitSub‘如果没有选中,直接退出过程

MyMusic.PlayMusicList1.List(List1.ListIndex)

'调用MyMusic对象的PalyMusic方法

Label2.Caption=MyMusic.Music'置Label2标题为当前播放音乐MyMusic.StopMusicLabel2.Caption=""9.5让程序记住窗体关闭前的位置演示思路分析:在程序结束时,先将当前窗口的左上角坐标保存起来。程序启动时,将其读出来并定位窗口。问题是要保存到什么地方呢?——文件9.5让程序记住窗体关闭前的位置9.5.1关于文件9.5.2让程序记住窗体关闭前的位置9.5.1关于文件文件:存储在硬盘介质的文本、图像、音乐、数据库、可执行程序等。文件访问方式顺序访问:主要用于文本文件随机访问:主要用于数据库文件访问二进制访问:主要用于图像文件的访问文件读写过程:打开——读(写)——关闭9.5.1关于文件顺序文件访问:打开:Open“文件名”For模式As[#]文件号Close[[#]文件号][,[#]文件号]….顺序文件访问模式:写模式Open“文件名”ForOutputAs[#]文件号Open“文件名”ForAppendAs[#]文件号Open“文件名”ForInputAs[#]文件号顺序文件访问方法:关闭:覆盖同名文件从末尾添加读模式:写:Write#文件号,[表达式][,][表达式]….读:Input#文件号,[变量名][,][变量名]….9.5.1关于文件顺序文件写文件过程Open

文件全路径ForOutput[Append]As#文件号Write#文件号,表达式列表1Write

#文件号,表达式列表2……..Close#文件号顺序文件读文件过程Open

文件全路径ForInputAs#文件号Input#文件号,变量列表1Input#文件号,变量列表2……..Close#文件号注意:对同一个文件读和写的顺序必须一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论