7天VB实例教程
第一天、使用VB收发电子邮件
小叮当:我说小蘑菇呀,既然你已经学习过VB的基础知识,也做过一些简单的程序,那么我也就不浪费口水教你认识界面、了解控件和学习语法了。不如我来教教你怎么样制作出一些切实可用的程序,这样既能够加深对VB的认识,还可以让你拥有十足的成就感呢! 小蘑菇:好呀,那做一些什么程序呢? 小叮当:当然不会像我哥哥当年那样简单至极的程序,而是一些具有实用性的程序,也可以做一个小游戏之类的,你看怎么样? 小蘑菇:好的,不过今天别教我做游戏,不然明天就没有心思学了。 小叮当:这个我自然知道,那我们就开始动手制作一个收发电子邮件的程序吧。 小蘑菇:收发电子邮件?这个会不会很难呢? 小叮当:正所谓会者不难,难者不会,有我这位名师指点,你还怕什么呢?开始动手吧! 一、准备工作 小叮当:在VB中编写电子邮件程序需要通过调用微软公司的MAPI(Messaging Application Programming Interface,消息应用程序编程接口),这需要借助两个实现电子邮件收发功能的核心控件:MAPI会话控件和MAPI消息控件。MAPI会话控件用于建立和控制一个Microsoft Mail会话,MAPI消息控件用于创建和收发邮件消息。此外,Windows系统中必须要有遵从MAPI的邮件系统,比如Exchange、Outlook等软件,而还要进行一番设置,确保邮件系统可以正常使用。 小蘑菇:呵呵,没关系,我用的就是Outlook,正好符合要求。不过你说的MAPI控件在哪里找呢? 小叮当:在VB中就有现成的,不过程序没有直接放置在工具箱里,需要我们自己将MAPI控件加入VB工具箱。首先直接在VB左边的控件栏中右击鼠标,并在弹出菜单中选择“部件”命令,这时可以激活部件设置窗口,在其中的“控件”列表框中选取“Microsoft MAPI Controls”一项(如图1所示),接着按下“确定”按钮之后可以发现工具箱中将多出了两个图标,这就是MAPI会话控件和MAPI消息控件的图标(如图2所示)。
图一图二
二、邮件发送程序 小叮当:添加好我们所需要的控件之后,就开始定制邮件的发送程序吧。这个邮件发送程序的基本处理过程是:根据用户输入信息组成邮件,然后使用MAPI消息控件的Send
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
将邮件发出。具体的方法按照下述步骤完成: 1、新建一个VB项目,并将缺省窗体Form1的Caption属性设置为“发送邮件”。 2、在Form1中加入一个MAPI会话控件MAPISession1和一个MAPI消息控件MAPIMessages1。 3、在Form1中加入三个TextBox控件,将它们的名称属性分别设置为“txtSendTo”、“txtSubject”和“txtMessage”,另外还要将txtMessage的Multiline属性设置为“True”。这三个TextBox控件将分别用于填写邮件的收件人地址、邮件主题和邮件正文。 4、在Form1中加入三个Label控件,将它们的Caption属性分别设置为“收件人”、“主题”和“内容”,并将它们放在合适的位置用以标注相应的TextBox控件。 5、在Form1中加入一个Command Button控件,将其Caption属性和名称属性分别设置为“发送”和“Send”。 所有的控件添加完毕之后应该如图3所示。
图三
小蘑菇:还挺像这么回事的呢,接着应该填写代码了吧。 小叮当:是呀,下面就是代码部分的内容: 1、将下列代码加入Form1的Form_Load事件: Private Sub Form_Load() MAPISession1.SignOn /运行程序之后进行邮箱登录操作 End Sub 2、将下列代码加入Form1的Form_Unload事件: Private Sub Form_Unload(Cancel As Integer) MAPISession1.SignOff /退出程序时候进行退出邮箱操作 End Sub 3、将下列代码加入cmdSend的Click事件: Private Sub cmdSend_Click() With MAPIMessages1 .MsgIndex = -1 .RecipDisplayName = txtSendTo.Text /收信人地址 .MsgSubject = txtSubject.Text /邮件主题 .MsgNoteText = txtMessage.Text /邮件正文 .SessionID = MAPISession1.SessionID /发送程序和邮件工具之间建立的任务数 .Send End With MsgBox "邮件发送完毕!", , "发送邮件" /发送成功显示信息框 End Sub 这样一个电子邮件发送部分就制作完成了,运行程序之后只要填写好邮件的收件人、主题和内容后,按下“发送”命令按钮,邮件就已经成功地发往目的地了(如图4所示)。图4
小蘑菇:真的发送出去了,不过这是不是你的障眼法呢?我要收到这封信才相信! 小叮当:对我还不相信?好吧,下面再制作一个邮件接收程序来收取这封信件。 三、邮件接收程序 小叮当:邮件接收程序比邮件发送程序要复杂一些,这个程序首先需要使用MAPI消息控件的Fetch方法读取邮件,这个过程将把用户收件箱中所有未读邮件全部装入MAPI消息控件中。接着,检查MAPI消息控件的MsgCount属性以确定通过Fetch方法读取的邮件的总数,然后可以通过设置MAPI消息控件的MsgIndex属性来指定具体需要处理哪一封邮件。需要说明的是,MsgIndex属性值的计数是从0开始的,也就是说,第一封邮件的索引号是0,第二封邮件的索引号是1,依次类推。具体步骤如下: 1、新建一个VB项目,将缺省窗体Form1的Caption属性设置为“接收邮件”。 2、在Form1中加入一个MAPI会话控件MAPISession1和一个MAPI消息控件MAPIMessages1。 3、在Form1中加入三个Label控件和一个TextBox控件,将三个标签控件的名称属性分别设置为“lblMsgDateReceived”、“lblMsgOrigDisplayName”和“lblMsgSubject”,将TextBox控件的名称属性设置为“txtMsgNoteText”,并将标签控件的Caption属性和文本框控件的Text属性的内容清空。这四个控件将分别用于显示邮件的日期、发件人、主题和内容。 4、将txtMsgNoteText控件的Locked属性和Multiline属性设置为“True”,ScrollBars属性设置为“2-Vertical”。 5、在Form1中再加入四个Label控件用于标注上述四个控件,将它们的Caption属性分别设置为“日期”、“发件人”、“主题”和“内容”。 6、在Form1中加入一个Label控件,将其名称属性设置为“lblMsgCount”,Caption属性设置为“第 0 封邮件,总计 0 封邮件”。这个控件用于显示接收的邮件总数以及当前正在处理第几封邮件。 7、在Form1中加入三个Command Button控件,将它们的名称属性分别设置为“cmdPrevious”、“cmdNext”和“cmdClose”,Caption属性分别设置为“上一封”、“下一封”和“关闭”。 小蘑菇:那么具体的程序代码呢? 小叮当:又着急了不是?我还会骗你吗?下面就是具体的程序代码: 1、编写一个子程序FetchNewMail: Public Sub FetchNewMail() MAPIMessages1.FetchUnreadOnly = True MAPIMessages1.Fetch /Fetch命令将信件抓到系统存贮器的inbuffer中 End Sub 2、编写一个子程序DisplayMessage: Public Sub DisplayMessage() lblMsgCount.Caption = "第 " & Ltrim(Str(MAPIMessages1.MsgIndex + 1)) & " 封邮件,总计 " & Ltrim(Str(MAPIMessages1.MsgCount)) & " 封邮件" /由MsgCount知道信件数量,再用MsgIndex设置要看 哪一封信件的内容、标题 lblMsgDateReceived.Caption = MAPIMessages1.MsgDateReceived /收取信件的日期 txtMsgNoteText.Text = MAPIMessages1.MsgNoteText /收取信件的内容 lblMsgOrigDisplayName.Caption = MAPIMessages1.MsgOrigDisplayName /发送邮件的姓名 lblMsgSubject.Caption = MAPIMessages1.MsgSubject /邮件主题 End Sub 3、将下列代码加入Form1的Form_Load事件: Private Sub Form_Load() MAPISession1.SignOn MAPIMessages1.SessionID = MAPISession1.SessionID FetchNewMail /调用Fetch子程序 DisplayMessage /调用DisPlayMessage子程序 End Sub 4、将下列代码加入cmdPrevious的Click事件: Private Sub cmdPrevious() If MAPIMessages1.MsgIndex > 0 Then MAPIMessages1.MsgIndex = MAPIMessages1.MsgIndex - 1 /当收取信件超过1封的时候,通过“上一封”按钮查看前面的信件 DisplayMessage Else Beep End If End Sub 5、将下列代码加入cmdNext的Click事件: Private Sub cmdNext_Click() If MAPIMessages1.MsgIndex < MAPIMessages1.MsgCount - 1 Then MAPIMessages1.MsgIndex = MAPIMessages1.MsgIndex + 1 /当收取信件超过1封的时候,通过“下一封”按钮查看后面的信件 DisplayMessage Else Beep End If End Sub 6、将下列代码加入cmdClose的Click事件: Private Sub cmdClose_Click() Unload Me End Sub 程序运行后,在窗体加载过程中,窗体Load事件中的代码会读取新邮件,如果有新邮件,就显示第一个新邮件,如果有多个新邮件,则可以使用“上一封”和“下一封”命令按钮前后翻阅。你再看看,这封收取下来的邮件是不是我们刚才发送出去的? 小蘑菇:呵呵,真厉害!其实刚才我知道你肯定可以收到这封邮件的,只不过是说着玩的,嘿嘿。我来试着给别人发送一些邮件。 小叮当:那你就用它给好朋友发送几封邮件,告诉他们是用你自己编写的程序发送的,他们保证大吃一惊呢。
第二天、自制媒体播放器
小蘑菇:姐姐来看我刚刚下载的《黑衣人2》,可好玩了。 小叮当:用MediaPlayer看的?不如这样吧,今天我教你怎样制作一个媒体播放器,你看如何? 小蘑菇:自己做的媒体播放器也可以看《黑衣人2》吗? 小叮当:那是当然的,不然我岂不是变成了大骗子? 小蘑菇:呵呵,那感情好呀,这样我可以拿到班上给同学炫耀一下喽。 小叮当:我们这个媒体播放器的目的是可以播放VCD、WAV、MP3等媒体文件,而且全部的功能基本上和Windows附带的媒体播放器差不多。其实要制作这样一个播放器并不困难,因为在VB中提供了一个MediaPlayer控件,它帮我们解决了很多实际问题,只要按照下面的步骤就可以了。 1、因为我们需要使用到MediaPlayer控件,所以刚开始就要右击工具面板并在部件添加窗口里选择“Windows MediaPlayer”来添加这个控件,同时还要添加“CommonDialog”控件。 2、在窗口
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
器中创建一个MediaPlayer控件、五个Command Button控件和一个CommonDialog控件。 3、将Form1的Caption属性更改为“小叮当的媒体播放器”。 4、分别将五个Command Button控件的Caption属性分别命名为“暂停”、“播放”、“停止”、“选择”和“退出”,然后把它们按照一定的位置放好。
5、选中CommonDialog控件之后,在右边属性的“Filter”对话框中输入“*.RMVB|*.wav)|*.wav|MIDI(*.mid)|*.mid|MPEG(*.mpeg)|*.mpeg|DAT(*.dat)|*.dat|AVI(*.avi)|*.avi|MP3(*.mp3)|*.mp3”的文件过滤选项,这样就可以支持各种常见的媒体影像文件了。
小蘑菇:看起来和真正的MediaPlayer差不多呀,还蛮有专业水准的呢。 小叮当:是呀,这全要归功于MediaPlayer控件,下面就是代码编写部分内容了: 1、首先要双击Form1窗口,并选择“通用”对象,输入下面的通用代码: Option Explicit Dim playfilename As String /定义播放文件的名称 Dim playposition As Double /定义当前播放的位置 2、双击“暂停”按键并输入下列代码: Private Sub Command1_Click() Command1.Enabled = False /暂停按键失效 MediaPlayer1.Pause /暂停播放 playposition = MediaPlayer1.CurrentPosition /当前的播放位置 End Sub 3、双击“播放”按键并输入下列代码: Private Sub Command2_Click() Command1.Enabled = True /暂停按键有效 Command3.Enabled = True /停止按键有效 MediaPlayer1.filename = playfilename /播放媒体文件名称 MediaPlayer1.SelectionStart = playposition /当前播放的位置 MediaPlayer1.Play /播放媒体文件 End Sub 4、双击“停止”按键并输入下列代码: Private Sub Command3_Click() playposition = 0 /停止播放 Command3.Enabled = False /停止按键无效 Command1.Enabled = False /暂停按键无效 Command2.Enabled = True /播放按键有效 MediaPlayer1.Stop /停止播放 End Sub 5、双击“选择”按键并输入下列代码: Private Sub Command4_Click() CommonDialog1.showopen /打开文件对话框 playfilename = CommonDialog1.filename /记录播放文件名 playposition = 0 /第一次打开文件时候,播放位置为0 End Sub 6、双击“退出”按键并输入下列代码: Private Sub Command5_Click() Unload Me /卸载窗口 End /结束程序 End Sub 代码全部输入完毕之后,运行程序后按下“选择”按键,此时会弹出打开文件对话框供你选择需要播放的文件。
选中相应的文件之后,就可以进行欣赏了。如果需要在别的计算机上使用这个程序的话,还可以选择“工具”菜单下的“生成.exe文件”选项来制作一个可以直接运行的exe格式文件,这样将程序复制到其他机器上就可以使用了。”
小蘑菇:好开心呀,我来试试用自己做的程序看《黑衣人2》,哈哈,真过瘾! 小叮当:瞧你乐得这个劲,那你就慢慢看吧。对了,通过VB还可以制作Flash动画、QuickTime等多种格式的播放器,你自己不如依葫芦画瓢的尝试一下,看看你的天份有多少,呵呵! 小蘑菇:放心吧,保证不会让你失望的!
第三天、定时闹钟程序
小蘑菇:叮当姐姐,你知道Windows中的计划任务工作原理吗?它能够在指定的时间开始相应的工作,蛮方便的呢。 小叮当:不要认为它很神秘,其实用VB来设计这样一个程序是非常容易的事。不如今天就教你怎样制作一个简单的定时闹钟程序?这样可以在指定的时间到达之后自动运行设置好的程序,你看怎么样? 小蘑菇:好呀,好呀,赶紧开始吧。 小叮当:首先要添加程序所需要的控件。 1、新建一个
工程
路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理
,将Form1的startupposition属性设置为“2-centerscreen”,同时将maxbutton属性设置为“False”。这样程序运行之后窗口出现在屏幕中间,而且最大化按钮处于无效状态。 2、在Form1窗口中添加三个Command Button,分别将它们的Caption属性更改为“预设文件”、“设定时间”、“即时启动”和“退出”。 3、在“预设文件”按钮后面放置一个Label控件用于显示预设的文件路径和名称,并且将它的Caption属性设置为空。 4、在“设定时间”按钮后面放置三个Label控件,其中Label2和Label4的Caption属性设置为空,Label3控件的Caption属性设置为“当前时间:”。 5、添加一个common dialog控件,不过别忘记需要从部件添加窗口里添加到工具箱中哟。 6、添加一个Timer控件,并将它的interval属性设置为500。 所有控件添加设置完成后应该如图所示。
小蘑菇:就这么简单的几个控件可以实现定时闹钟的功能吗? 小叮当:别小瞧了VB的功能,看完下面的代码再说吧。 1、双击Form1窗口,并选择“通用”对象,输入下面的通用代码: Option Explicit Dim AlarmTime /申明变量 2、双击“预设文件”按钮并输入下面的代码: Private Sub Command1_Click() Call dialog /调用dialog子程序 End Sub 3、双击“设定时间”按钮并输入下面的代码: Private Sub Command2_Click() AlarmTime = InputBox("请输入你想设定的时间,例如(19:12:00)", "小闹钟") If AlarmTime = "" Then Exit Sub If Not IsDate(AlarmTime) Then /isdate函数是判断输入的是否可转换成date格式 MsgBox "你所输入的不是时间格式,请重试!", ,"Wrong" Else AlarmTime = CDate(AlarmTime) End If /判断输入的是否可转换成time格式 End Sub 4、双击“即时启动”按钮并输入下面的代码: Private Sub Command3_Click() Call deng /调用deng子程序 End Sub 5、双击“退出”按钮并输入下面的代码: Private Sub Command4_Click() end End Sub 6、双击Form1窗口,选择“Click”事件,并输入下列代码: Private Sub Form_Click() frmAbout.Show /显示关于对话框 End Sub 7、双击Form1窗口,选择“Load”事件,并输入下列代码: Private Sub Form_Load() Command3.Enabled = 0 AlarmTime = "" /初始化时command3为不可用的 End Sub 8、双击Form1窗口,选择“Resize”事件,并输入下列代码: Private Sub Form_Resize() If WindowState = 1 Then mintime /如果窗口被最小化,则调用mintime程序 else caption="小闹钟" End If End Sub 9、编写mintime子程序: Sub mintime() Caption = Format(Time, "long Time") /使用长时间格式来显示时间 End Sub 10、双击Timer1控件并输入下列代码: Private Sub Timer1_Timer() f Label2.Caption <> CStr(Time) Then Label2.Caption = AlarmTime Label3.Caption = Time /显示时间每秒钟的变化 End If If Time >= AlarmTime Then Call deng /判断如果现在的时间超过了设定的时间,则调用deng子程序 End If If WindowState = 1 Then If Minute(CDate(Caption)) <> Minute(Time) Then mintime /最小化时显示时间每分钟的变化 End If End If End Sub 11、编写dialog子程序: Sub dialog() CommonDialog1.Flags = cdlCFBoth CommonDialog1.ShowOpen Label1.Caption = CommonDialog1.filename /把打开的文件名给于label1 If Label1 <> “" Then Command3.Enabled = -1 /如果label1不为空时,则command3即可用 Else Exit Sub End If End Sub 12、编写deng子程序 Sub deng() Dim ss ss = Shell(Label1.Caption, 1) /启动指定的文件,并且结束小闹钟程序 End End Sub 好了,现在试着运行程序看看。先点击上部的“预设文件”按钮添加一个定时自动运行的程序,然后通过“设定时间”按钮设置好一个时间,这样当时间到达的时候就会自动运行你所需要的这个程序了。
小蘑菇:这倒不错,以后我用电脑学习一段时间之后就可以通过这个程序来定时运行游戏,这样就不会错过休息娱乐的时间了,哈哈。 小叮当:不会吧,我教你做的这个程序就用来定时玩游戏?我真是服了你!不管怎么样,好好研究一下这个程序,虽然很小巧,但的确是非常实用的!
第四天、打字
练习
飞向蓝天的恐龙练习非连续性文本练习把字句和被字句的转换练习呼风唤雨的世纪练习呼风唤雨的世纪课后练习
程序
小叮当:我说小蘑菇呀,前几分钟之前还看你在编程序,怎么现在又开始玩游戏了? 小蘑菇:都是昨天定时程序的作用呀,我现在是编程10分钟,游戏50分钟,这样劳逸结合,安排的不错吧。 小叮当:有你这么安排的吗?整个就是在浪费时间!别玩游戏了,今天教你一些什么呢? 小蘑菇:最好是寓教于乐的程序最好,比如一边玩游戏一边学习的。 小叮当:给我出难题?那就教你一个寓教于乐的程序,来制作一个打字练习程序怎么样? 小蘑菇:真的?也好,我先看看再说。 小叮当:OK,还是老规矩,先创建一些控件再说。 1、新建一个工程,将Form1的Caption属性修改为“打字练习”,同时将MaxButton和MinButton两个属性都设置为“False”,这样在程序运行之后可以取消右上角的最小化和最大化按钮。 2、添加一个Frame控件,将它的Caption属性设置为空,并且将BorderStyle属性设置为“0-None”,然后在这个Frame中添加1个Label控件。 3、在Form1窗口中添加4个Label控件,其中两个Label控件的Caption属性分别设置为“得分”和“剩余”,另外两个Label控件的BackStyle和BorderStyle属性均设置为“1-Opaque”和“1-Fixed”,这样将使得它们以3D立体形式显示出来,最后分别将这两个Label控件的Caption属性设置为“0”和“200”。 4、在Frame区域中再添加一个Label控件。 5、在Form1窗口中添加一个Command Button控件,将它的Caption属性更改为“开始”。 6、添加三个Timer控件,并将它的interval属性分别设置为100、1000和100。 所有控件添加设置完成后应该如图所示。
小蘑菇:看起来好复杂的样子,代码编写部分是不是也很繁琐? 小叮当:说难不难,说简单也不简单。我们的目的是通过嵌套在Frame中的两个Label控件来随机显示字母,然后通过键盘输入字母,由程序检验输入的字母和显示的字母是否一样,如果一样则说明正确,可以加分,否则说明输入错误。其实最关键要把握住编程的思想,这个说起来就话长了,还是看看具体的源代码怎么写吧。 1、双击Form1窗口,并选择“通用”对象,输入下面的通用代码: Option Explicit Dim score As Integer /定义变量 Dim speed As Integer /定义变量 2、编写init子程序(用于设置第一个出现的字母) Sub init() Label1.Caption = Chr(Int(Rnd * 26) + 49) /设定Label1随机显示的字母 speed = Int(Rnd * 100 + 100) /设定Label1随机显示字母的速度 Label1.Left = Int(Rnd * Frame1.Width) /设定Label1代表字母出现的左边位置 Label1.Top = Frame1.Top /设定Label1代表字母出现的顶部位置 End Sub 3、编写init1子程序(用于第二个出现的字母) Sub init1() Label6.Caption = Chr(Int(Rnd * 26) + 97) /设定Label2随机显示的字母 speed = Int(Rnd * 100 + 100) /设定Label2随机显示字母的速度 Label6.Left = Int(Rnd * Frame1.Width) /设定Label2代表字母出现的左边位置 Label6.Top = Frame1.Top /设定Label2代表字母出现的顶部位置 End Sub 4、双击“开始”按钮并输入下列代码: Private Sub Command1_Click() init /调用init子程序 Timer1.Enabled = True /激活Time1控件 Timer2.Enabled = True /激活Time2控件 Command1.Visible = False Label5.Caption = 200 Label4.Caption = 0 End Sub 5、双击Form1窗口,并选择“KeyPress”对象,输入下面的用代码: Private Sub Form_KeyPress(KeyAscii As Integer) If Chr(KeyAscii) = Label1.Caption Then /校验键盘输入字符和Label1显示的字符 init score = score + 1 /得分加1 Label4.Caption = score End If If Chr(KeyAscii) = Label6.Caption Then /校验键盘输入字符和Label2显示的字符 init1 score = score + 1 Label4.Caption = score /Label4控件显示得分情况 End If End Sub 6、双击Form1窗口,并选择“Load”对象,输入下面的用代码: Private Sub Form_Load() Randomize Timer1.Enabled = False /Time1控件失效 Timer2.Enabled = False /Time2控件失效 End Sub 7、双击Timer1控件并输入下列代码: Private Sub Timer1_Timer() Label1.Top = Label1.Top + speed If Label1.Top > Frame1.Height Then /第一个字母超出屏幕范围的时候调用init子程序重新出现一个字母 init End If Label6.Top = Label6.Top + speed If Label6.Top > Frame1.Height Then /第二个字母超出屏幕范围的时候调用init1子程序重新出现一个字母 init1 End If End Sub 8、双击Timer2控件并输入下列代码: Private Sub Timer2_Timer() Label5.Caption = Val(Label5.Caption) - 1 /扣除剩余个数中的一个 If Val(Label5.Caption) <= 0 Then Timer1.Enabled = False /剩余个数小于等于0的时候结束练习 Label1.Caption = "" /不显示字母 Label6.Caption = "" Select Case score Case Is <= 80 MsgBox vbCrLf + "别放弃,再来一次!" /显示信息框 Case Is < 120 MsgBox vbCrLf + "成绩不错,加油!" Case Is < 150 MsgBox vbCrLf + "再努力做的更好一些!" Case Is > 180 MsgBox vbCrLf + "好厉害!最高分呀!" End Select Command1.Visible = True Label4.Caption = 0 Label5.Caption = 200 Timer1.Enabled = False Timer2.Enabled = False End If End Sub 上面就是全部的源代码了,你可以运行试试看。
小蘑菇:呵呵,想测试我的打字速度?那还不是小菜一碟? 小叮当:嘿嘿,别说大话,先运行一下再说。怎么样,得了多少分?还小菜一碟吗?
小蘑菇:速度太快了,要是慢一点的话,我肯定能够得高分! 小叮当:慢一点?慢一点怎么能体现出你的高超技术呢?其实速度可以通过init和init1程序来控制,只要将数值更改的小一些就可以轻轻松松的得到高分了。 小蘑菇:我想到了一个好办法,先把速度降低,然后自己得一个高分,截图保存之后拿给朋友看看,让他们也测试一下,但是给他们的程序就是速度非常快的,这样就可以大大的刺激他们一下了,哈哈哈哈。
小叮当:整天就想着这些损人不利己的事情,有空还是真正练习一下自己的指法比较好,省得到时候出丑呢!
第五天、Flash动画播放器
小蘑菇:叮当姐姐,上次你教我做媒体播放器之后不是让我自己做一个Flash动画的播放器吗?但是我始终没有搞定,还是你来帮帮忙吧。 小叮当:咦,现在怎么变得谦虚起来了?既然是这样,就由我出马搞定吧。 一、准备工作 小叮当:制作Flash动画播放器的时候需要调用一个Flash控件---Swflash.ocx,这个控件可以通过安装Flash,或者通过安装Windows 98自带的Flash插件来搞定。比如采取后一种方法,只要在控制面板中选择“添加/删除程序”图标,进入“Windows 安装程序”界面之后在“多媒体”一项中点选“Macromedia Shockwave Flash”前的复选框确定即可。 小蘑菇:不用这么麻烦吧,其实我的计算机中已经安装过Flash了,还用它制作过一些动画呢。 小叮当:切,你不早说?浪费我这么多口水。不过即使已经安装了Flash,也要用鼠标右击工具箱,并在弹出的部件添加窗口中选把Shockwave flash、Microsoft Common Dialog Control 6.0 (SP3)和Microsoft Windows Common Control 6.0 (SP3)这三个控件添加到工具箱中。完成这一步设置后,就可以开始制作Flash动画播放器了。 二、制作Flash播放器 小叮当:咱们制作的这个Flash动画播放器要能够一次打开多个Flash动画文件,可以在播放过程中选择播放打开的文件、随时改变播放质量、画面大小等状态,而且在播放过程中可以随时对播放的当前帧数进行调整或者手动进行逐帧播放,在状态栏里有当前播放状态的相关说明等等。下面先来添加程序所需要的控件。 1、新建一个工程,将Form1的Caption属性设置为“小叮当的Flash动画播放器”。 2、在Form1窗口中添加一个CommonDialog控件,将CommonDialog1控件的CancelError设置为“True”,DialogTitle设置为“打开Flash动画文件”,Filter属性设置为“Flash动画(*.swf)|*.swf|”,FilterIndex设置为“1”,MaxFileSize设置为“10240”。 3、在Form1窗口中添加一个Slider控件,将Slider1的SelectRanger的属性设置为“True”,SmallChange属性和LargeChange属性均设置为“10”,TickFrequengcy属性设置为“20”,TextPosition设置为“1-SldBelowRight”。 4、在Form1窗口中添加3个Label控件,并将Label1的Caption设置为“0帧”,Label2和Label3的Caption设置为空字符串。 5、在Form1窗口中添加8个CommandButton控件,将它们的名称属性分别设置为“cmdOpen”、“cmdPlay”、“cmdPause”、“cmdPre”、“cmdPreFrame”、“cmdNextFrame”、“cmdNext”和“cmdExit”,Caption属性分别设置为“打开”、“播放”、“暂停”、“上一个”、“上一帧”、“下一帧”、“下一个”和“退出”。 6、在Form1窗口中添加一个Status Bar控件,在这个控件上单击鼠标右键并选择“属性”命令,从弹出的窗口中选择“窗格”标签,用鼠标点击“插入窗格”5次表示插入5个状态窗格,在索引1-5中分别设置“文本”属性分别为“共打开了0个文件”、“状态:”、“等待”、“帧数:”、“0”。
7、接着按下“Ctrl+E”的组合按键进入菜单编辑器,设置第一个菜单标题为“显示控制”,名称为mnuDisplay。在“显示控制”菜单下分别设立“全部显示”、“随窗口大小变化”和“缩放至窗口大小”子菜单标题,名称分别为:mnuDisplay0、mnuDisplay1和mnuDisplay2。设置第二个菜单标题为“质量控制”,名称为mnuQuality。在“质量控制”菜单下分别设立“低分辨率”和“高分辨率”的子菜单,名称分别为mnuQuality0和mnuQuality1。设置第三个菜单标题为“播放控制”,名称为mnuPlayControl。在“播放控制”菜单下分别设立“循环播放”、“放大画面”和“缩小画面”子菜单,名称分别为mnuLoopPlay、mnuZoomIn和mnuZoomOut。
8、选择“工程”菜单下的“添加窗体”命令,新增一个窗口Form2作为播放窗口。在Form2上加入1个ShockwaveFlash控件和1个Timer控件,将Timer1控件的Interval属性设置为“20”。 最后,对各窗体、控件的大小和位置进行适当的调整, 小蘑菇:乖乖,看来这次是玩真的了,又是控件又是菜单,还有一个播放窗口,厉害。 小叮当:下面就来针对Form1进行代码添加。 1、双击Form1窗口,并选择“通用”对象,输入下面的通用代码: Dim FileNames() As String /用于保存打开的文件名称 Dim PlayFileNum As Integer /用于计算正在播放的文件序号 Dim TotalFile As Integer /用于统计打开的文件总数 2、双击“打开”按钮并输入下列代码: Private Sub cmdOpen_Click() On Error GoTo ExitOpen CommonDialog1.Flags = cdlOFNAllowMultiselect Or cdlOFNFileMustExist Or cdlOFNExplorer CommonDialog1.FileName = " " CommonDialog1.ShowOpen /显示“打开”对话框。 FileNames() = Split(CommonDialog1.FileName, vbNullChar) /以vbNullChar作为子字符串的边界分隔字符串CommonDialog1返回的FileName If UBound(FileNames) = 0 Then /只打开了一个文件 Form2!ShockwaveFlash1.Movie = FileNames(0) TotalFile = 1 PlayFileNum = 0 Else /打开了多于一个文件 Form2!ShockwaveFlash1.Movie = FileNames(0) + ″\″ + FileNames(1) TotalFile = UBound(FileNames) PlayFileNum = 1 End If StatusBar1.Panels(1).Text = ″共打开了″ + Trim(Str(TotalFile)) + ″个文件″ cmdPlay_Click ExitOpen: End Sub 3、双击“播放”按钮并输入下列代码: Private Sub cmdPlay_Click() If TotalFile < 1 Then Exit Sub /还没有打开文件。 Form2.Caption = FileNames(PlayFileNum) + "- 小叮当的Flash动画播放器" /显示Form2开始播放动画 Form2.Show Form2!ShockwaveFlash1.Playing = True If TotalFile = 1 Then PlayFileNum = 0 StatusBar1.Panels(3).Text = "正在播放文件:" + FileNames(PlayFileNum) + " …" /显示状态条的信息 Slider1.Max = Form2!ShockwaveFlash1.TotalFrames /显示滑动条的状态 Label2.Caption = Str(Slider1.Max / 2) + "帧" Label3.Caption = Str(Slider1.Max) + "帧" End Sub 4、双击“暂停”按钮并输入下列代码: Private Sub cmdPause_Click() Form2!ShockwaveFlash1.Stop End Sub 5、双击“上一个”按钮并输入下列代码: Private Sub cmdPre_Click() If TotalFile <> 1 Then /打开多个文件时 PlayFileNum = PlayFileNum - 1 If PlayFileNum < 1 Then PlayFileNum = TotalFile Form2!ShockwaveFlash1.Movie = FileNames(0) + "\" + FileNames(PlayFileNum) End If StatusBar1.Panels(3).Text = "正在播放文件:" + FileNames(PlayFileNum) + "…" /显示播放状态的信息 Slider1.Max = Form2!ShockwaveFlash1.TotalFrames Form2.Caption = FileNames(PlayFileNum) + "- 小叮当的Flash动画播放器" Label2.Caption = Str(Slider1.Max / 2) + "帧" Label3.Caption = Str(Slider1.Max) + "帧" End Sub 6、双击“下一个”按钮并输入下列代码: Private Sub cmdNext_Click() If TotalFile <> 1 Then /打开多于一个文件时 PlayFileNum = PlayFileNum + 1 If PlayFileNum>TotalFile Then PlayFileNum = 1 Form2!ShockwaveFlash1.Movie = FileNames(0) + "\" + FileNames(PlayFileNum) End If StatusBar1.Panels(3).Text = "正在播放文件:" + FileNames(PlayFileNum) + " …" /显示播放状态的信息 Slider1.Max = Form2!ShockwaveFlash1.TotalFrames Form2.Caption = FileNames(PlayFileNum) + "- 小叮当的Flash动画播放器" Label2.Caption = Str(Slider1.Max / 2) + "帧" Label3.Caption = Str(Slider1.Max) + "帧" End Sub 7、双击“上一帧”按钮并输入下列代码: Private Sub cmdPreFrame_Click() Form2!ShockwaveFlash1.Back /跳到动画的上一帧 End Sub 8、双击“下一帧”按钮并输入下列代码: Private Sub cmdNextFrame_Click() Form2!ShockwaveFlash1.Forward /跳到动画的下一帧 End Sub 9、双击“退出”按钮并输入下列代码: Private Sub cmdExit_Click() End End Sub 10、在Form1窗口中选择“Slider1”对象的“Scroll”事件,并输入下面的通用代码: Private Sub Slider1_Scroll() Form2!ShockwaveFlash1.FrameNum = Slider1.Value /当用户拖动滑动条时,将播放帧数设置为滑动条中的值 End Sub 11、选择“显示控制”菜单中的“全部显示”命令,并输入下列代码: Private Sub mnuDisplay0_Click() Form2!ShockwaveFlash1.ScaleMode = 0 /将画面大小设置为在控件内保持动画原来比例全部显示 mnuDisplay0.Checked = True mnuDisplay1.Checked = False mnuDisplay2.Checked = False End Sub 12、选择“显控制”菜单中的“随窗口大小变化”命令,并输入下列代码: Private Sub mnuDisplay1_Click() Form2!ShockwaveFlash1.ScaleMode = 1 /将画面的缩放设置为随控件横向(或纵向)的缩放而变化 mnuDisplay0.Checked = False mnuDisplay1.Checked = True mnuDisplay2.Checked = False End Sub 13、选择“显示控制”菜单中的“缩放至窗口大小”命令,并输入下列代码: Private Sub mnuDisplay2_Click() Form2!ShockwaveFlash1.ScaleMode = 2 /将画面大小设置为不理会动画原来比例缩放至控件大小 mnuDisplay0.Checked = False mnuDisplay1.Checked = False mnuDisplay2.Checked = True End Sub 14、选择“播放控制”菜单中的“循环播放”命令,并输入下列代码: Private Sub mnuLoopPlay_Click() mnuLoopPlay.Checked = Not mnuLoopPlay.Checked /将播放方式设置为循环或不循环 Form2!ShockwaveFlash1.Loop = Not Form2!ShockwaveFlash1.Loop End Sub 15、选择“播放控制”菜单中的“放大画面”命令,并输入下列代码: Private Sub mnuZoomIn_Click() Form2!ShockwaveFlash1.Zoom (50) /放大画面 End Sub 16、选择“播放控制”菜单中的“缩小画面”命令,并输入下列代码: Private Sub mnuZoomOut_Click() Form2!ShockwaveFlash1.Zoom (200) /缩小画面 End Sub 17、选择“质量控制”菜单中的“低分辨率”命令,并输入下列代码: Private Sub mnuQuality0_Click() Form2!ShockwaveFlash1.Quality = 0 /将画面质量设置为低分辨率 mnuQuality0.Checked = True mnuQuality1.Checked = False End Sub 18、选择“质量控制”菜单中的“高分辨率”命令,并输入下列代码: Private Sub mnuQuality1_Click() Form2!ShockwaveFlash1.Quality = 1 /将画面质量设置为高分辨率