登陆注册
13955600000028

第28章 多媒体程序设计(1)

目前使用人数最多的多媒体程序设计开发工具是VisualBasic(简称VB),是由美国Microsoft公司推出的基于Windows平台的程序开发工具,它从根本上改变了传统的程序设计模式,大大简化了Windows应用程序设计,可以编程处理文本、图像、动画、声音等多媒体数据,以设计或构造适合不同需求的多媒体应用系统。

本章介绍VB的基本概念,利用VB及其自身提供的MMCONTROL控制对象、多媒体控件及API函数的调用来开发多媒体程序。

7.1多媒体程序设计概述

设计多媒体软件,关键是对多种媒体设备的控制和使用。在Windows系统中,对多媒体设备进行控制主要有三种方法。

第一种方法是使用OLE(ObjectLinking&Embedding,对象链接与嵌入),它为不同软件之间共享数据和资源提供了有力的手段。目前,OLE技术得到了广泛的关注,OLE2.0标准得到越来越多的软件开发商的支持。

第二种方法是使用微软公司Windows系统中对多媒体支持的MCI(MediaControlInterface,媒体控制接口),MCI是多媒体设备和多媒体应用软件之间进行设备无关的沟通的桥梁。通过VB提供的MCI控件,就可以在VB中使用MCI指令控制各种多媒体外部设备,并读取各种多媒体系统所需的文件格式。

第三种方法是通过调用Windows的API(ApplicationProgrammingInterface,应用程序接口)多媒体相关函数实现媒体控制。

7.1.1多媒体应用结构

为支持多媒体,微软公司早在Windows3.0的基础上添加了多媒体扩充软件,而Windows3.1系统直接包含多媒体扩充软件,并支持对象的链接和嵌入(OLE)技术,为开发多媒体应用程序的软件人员提供了各种低级和高级服务功能,其中,MCI是其主要功能。WIN98/2000及更新版本加强了支持多媒体的能力,如即插即用,支持CD播放等。

Windows多媒体应用结构如图71所示。

①MMSYSTEM库,它提供了多媒体控制接口(MCI)服务和底层的多媒体支持函数(低级API函数)服务。

②多媒体设备驱动程序,它提供了低级MMSYSTEM函数与基本多媒体设备(如波形音频设备、MIDI设备、操作杆、定时器)之间的通信。

③媒体控制接口(MCI)的驱动程序,它提供了对媒体设备的高级控制,用于记录波形音频,演奏MIDI,播放CD、影碟等。

④提供了其他一些MCI设备驱动程序,像FLC、FLI三维动画,DVI动态视频,AVI、MCI影片器,以及与其他WindowsDLL的高层接口(如AAPLAY.DLL)等。

由上可知,多媒体控制接口(MCI)为多媒体模块中的高级接口,它是一种人机界面友好的接口,其控制能力比低级接口弱,但一般已能满足用户的要求。它通过API的某些函数调用,启动MCI指令,来控制多媒体设备,根据调用方式可分成基于字符串或基于消息的两类MCI接口。而用低级接口中的多媒体API函数,可以直接控制Waveform、MIDI、计时器、游戏操纵杆以及动画等。这类函数以“wave”,“midi”,“time”,“joy”,“mmp”,“snd”,“aux”,“mmi”开头。

7.1.2VB编程的基本概念

VB作为一种可视化的编程语言,具有如下特点:

1)三个重要概念

①窗口:窗口是一种有边界的矩形区域,例如,VB窗口、Word的文档窗口、对话框窗口等。

②事件:事件是通过鼠标、按键的操作、程序的控制或其他窗口所产生的操作或行为。

③消息:事件发生时就引发一条消息发送到操作系统。

2)事件驱动模型

事件驱动模型具有非过程化的特点,在事件驱动模型中,程序代码不是按照预定的顺序执行,而是在响应不同的事件时执行不同的代码片段。

3)Windows的工作方式

Windows操作系统通过给每一个窗口提供一个唯一的标志符来管理所有窗口。操作系统连续地监视每一个窗口的活动或事件信号。当事件发生时,就引发一条消息,操作系统处理该消息并广播给其他窗口,最后,每一个窗口根据自身处理该条消息的指令而采取适当的操作。

7.1.3VB中的对象

对象是代码和数据的组合,可以作为一个单位来处理。对象,简单地说就是我们经常看到的各种窗口、按钮、文本框等。对象可以是应用程序的一部分,比如控件或窗体。整个应用程序也是一个对象。具体地说,在VB中对象可分为全局对象和程序界面对象。

1.全局对象

全局对象是指应用程序在程序的任何层次都可以访问的对象,共有以下几种。

①APP:设计的应用程序,它的属性决定应用程序的标题、路径、可执行文件名以及帮助文件名等。

②Clipboard:它就是Windows中的剪贴板,在VB应用程序中可用关键字Clipboard来访问它,从而操作其上的数据或图形,即将数据送到剪贴板上或从剪贴板上取回数据。

③Screen:计算机屏幕,也是应用程序窗口的“容器”,通过它可以设置应用程序的窗口在屏幕上的位置以及鼠标指针的形状。

④Debug:调试窗口,当应用程序在VB集成环境中运行时它才显示出来,用于调试程序。

⑤Printer:打印机,联机的打印机也是一个对象,应用程序可操作它在纸上输出结果。

2.程序界面对象

程序界面对象共有以下几种。

1)Form:窗体

VB工程中的每一个窗体都是独立的对象,类似控件对象,它们提供一些事件过程,可作为程序界面或对话框。绝大多数情况下,人们把窗体当做在其中能放置控件的框架,它是应用程序界面中的部件或对话框中的部件的“容器”。

2)Control:控制部件(控件)

这是和用户交互的标准部件,命令按钮、文本框、列表框、滚动条、菜单等都属此类。除菜单控件外,所有控件都可用工具箱中的工具“画”出来。菜单控件是用菜单设计窗口作为工具设计出来的。界面设计就是在窗体上放置控件并指定其属性。

3)数据库访问对象

数据库是对象,并且还包含其他对象,如字段、索引等。专业版的VB可以操作数据库,数据库访问对象是为访问数据库而设的。

7.1.4VB程序设计要素

通常,一个VB程序至少含有一个窗体,在这个窗体中可以包含一个或多个对象,并以控件的形式存在。控件不仅拥有属性,还拥有事件过程,它决定当控件有一个或几个操作行为激活时所发生的事情。

1.属性(Properties)的设置

属性是一个对象的性质,它决定对象的外观和一般行为。对象的属性中,有的属性在设计时可更改,可通过属性窗口加以设置;有的属性是系统赋予对象的,只能在运行时访问,但不可更改;有的属性仅在运行时才可访问和更改。后两种属性出现在属性窗口的列表中。

在程序中,访问对象属性的格式如下:

\[对象名.\]属性

其中,对象名和属性间用“.”连接,若省略对象名,则指当前具有焦点的对象。上述组合可看做是一个变量,即可对其赋值(除非是只读属性),也可将其值赋予别的变量。

2.事件(Event)的产生

事件就是系统可以感知的用户操作信息,可以看做是系统对对象的响应。事件通常触发VB程序中的一段代码。事件可分为鼠标事件、键盘事件和其他事件。每个对象都可引发事件,在VB中都已经准备好对应的事件过程,程序员只需编写响应事件的代码。

3.函数(Function)、过程(Procedure)和方法(Method)的作用

1)函数

函数是包含操作数据的程序语句集。当我们需要完成某种任务时,就要调用过程;当我们需要返回值时,就要调用函数。VB包括几十种函数,这些函数执行通用的操作,如修改字符串的前导空格或去掉其尾部空格或计算一个角度的正弦。

2)过程

在VB中,每个对象可引发的事件过程的模板已经准备好,在设计时,双击控件,可打开与此控件有关的代码窗口,在过程下拉列表框中,列出了这个控件可能引发的事件对应的过程。选择某一过程可打开该过程的代码模板。另一种过程就是函数,和对象相联系的函数用于改变或设置对象的某种属性,例如,LoadPicture函数可设置窗体的Picture属性。

3)方法

VB中的窗体和控件对象给我们提供了一种特殊的过程,它在程序控制下工作,可以看做是对象的动作。在面向对象程序设计中,这样的过程叫做方法。方法是一种特殊的过程,它和过程的差别是它从属于特定的对象,因此调用时必须指明对象。方法的调用语法为:

\[对象名.\]方法\[参数\]

对象名和方法之间用“.”连接,若省略对象名,则对象指的是当前的活动对象。例如,调用Debug对象的Print方法,可用语句:

Debug.Print

4.模块(Module)组织

VB应用程序的代码是以分层方式组织并存储在模块中的。典型的应用程序应包括若干模块:应用程序中每个窗体的窗体模块、共享代码的可选标准模块及可选的类模块。每个模块包含若干含有代码的过程:Event事件过程、Sub子过程或Function函数以及Property属性过程。

每个标准模块、类模块和窗体模块都可包含声明及过程。

①声明:可以将常数、类型、变量和动态链接库(DLL)过程的声明放在窗体、类或标准模块的模块级。

②过程:可以是Sub、Function或Property过程。它包含可以作为单元来执行的代码片段。

7.2利用VB编写特殊效果的程序

在这一部分主要是利用VB编写各种特殊效果的程序,像字体的缩放/闪烁、流动屏幕的设计、图形大小的更改、简单动画的应用等。下面给出几个简单例子(以VB6.0版本举例)。

【例7.1】在屏幕上对字符串“多媒体应用实例一”进行自动缩放。

在屏幕上绘制一个标签控件和计时控件,有关属性设置如表71所示。

其中bfly1.bmp和bfly2.bmp是VB提供的蝴蝶扑动的两个不同时刻的图片,让其在图片框上交替显示,演示蝴蝶扑动的动画。

【例7.3】LoadPicture函数实例。

使用LoadPicture函数将图片加载到窗体的PictureBox控件,单击窗体,PictureBox控件上的图片被清除。源程序如下:

PrivateSubForm_ClickDimMsgAsString’声明变量

OnErrorResumeNext’设置错误句柄

Height=3990’设置高度

Width=4890’设置宽度

Picture1.Picture=LoadPicture(App.Path+“\\Pic1.jpg”,vbLPCustom,vbLPColor,32,32)

’图片保存在当前工程文件所在的目录下

IfErrThen’加载图片

Msg=“Couldn’tfindthe.jpgfile.”

MsgBoxMsg’显示错误信息

ExitSub’如果发生错误则退出

7.3使用OLE控件开发多媒体程序

OLE是ObjectLinkingandEmbedding的缩写,意思为对象链接与嵌入技术,其含义是将一个包含OLE功能的程序链接或嵌入到其他基于OLE的Windows应用程序中。OLE技术能够实现不同软件之间的无缝集成,程序员可以把以前编写好、测试过的模块以对象方式插入到正在编写的程序中,这样就明显地提高了程序的结构性和软件开发效率。

7.3.1OLE控件属性介绍

在VB提供的VB工具箱中就有OLE控件对象。要使用OLE时,只要双击OLE控件,就能在窗体中绘制OLE控件,然后根据提问或直接在属性窗口设置OLE控件属性。其主要属性有以下几种。

①AutoActivate属性,设置OLE对象的激活方式。取值如下:

·0Manual,程序控制,Action值为7时数据激活;

·1GetFocus,当OLE控件获得输入焦点时数据激活;

·2DoubleClick,当双击OLE控件时数据激活,这是默认值;

·3Automatic,自动激活。

②Class属性,返回/设置一个嵌入式对象的类名。常用的与多媒体有关的类名有AVIFile(视频媒体)、midfile(MIDI文件)、mplayer(媒体播放器)、soundrec(录音)、pbrush(画笔)等。

③OLETypeAllowed属性,返回/设置OLE容器控件所能包含的对象类型。

④SizeMode属性,决定OLE容器控件如何改变大小及如何显示图像。

⑤SourceDoc属性,返回/设置创建对象时的磁盘文件(目录\\文件名)。

⑥SourceItem属性,返回/设置创建一个可链接对象时被链接文件内的数据。

⑦UpdateOptions属性,决定修改链接的数据时对象如何更新。

⑧Verb属性,返回/设置当使用Action属性激活对象时所执行的操作。取值如下:

·0OLE数据的缺省行为,一般为播放;

·1数据编辑,激发外部程序对数据编辑;

·2显示单独窗口进行数据编辑;

·3外部数据处理程序不可见。

⑨AutoActive的属性的缺省值为DoubleClick,意味着当执行VB程序时,只要在OLE对象上用鼠标双击,就可以直接驱动对象的动作。也可以将这样的属性关闭,而通过事件来启动。

如要播放,则在事件中加入如下代码:

OLEn.verb=0n为OLE对象序号,表示直接Play

OLEn.action=7表示直接驱动OLE

如要启动相关工具,并处于允许用户编辑的状态,可以在事件中加入如下代码:

OLEn.verb=-1n为OLE对象序号

OLEn.action=7

如要停止一个OLE对象的动作,只要在事件中加入如下代码:

OLEn.action=9

7.3.2多媒体OLE范例程序

【例7.4】在程序中嵌入一个位图。

①在窗体上绘制OLE控件,显示插入对象窗口。

②选择“由文件创建”,单击“浏览”按钮,选择所需嵌入的图像。如为链接图像,则在窗口中选择“链接”,也可为OLE对象选择一个“显示为图标”选项,此时单击“显示为图标”选项。

③按确定按钮。

同类推荐
  • 一本书读懂24种互联网思维

    一本书读懂24种互联网思维

    本书整合的改变世界的24种互联网思维,让我们对互联网新思维的认识变得立体、系统起来;同时深入浅出、通俗易懂地从技术和实践分析互联网新思维与传统思维相比较的优势,医治互联网焦虑症。未来属于既能深刻理解传统商业的本质,同时又具备互联网思维的人。
  • 纵横于天地之间——互联网络技术

    纵横于天地之间——互联网络技术

    本书告诉你:不管你是谁,只要生活在当前的时代,你一定知道电话,知道电脑,知道上网……知道许许多多关于电子、关于计算机、关于网络的话题,这就是网络时代。网络的话题可多了:它是怎么来的?什么是“蜘蛛网”?网络的过去和现在,上网的方法,如何使用网络,互联网的安全,网络有“陷阱”吗?网络有“瘾”吗?网络文化和未来又是怎样的?到书中去找答案吧!
  • 公开时刻

    公开时刻

    本书从传播者分析,内容分析,媒介分析受众与效果分析,传播环境与传播控制分析等几大方面把汶川地震作为重大传播案例,阐释汶川地震的传播学遗产。对政府部门和新闻媒体在危机公关方面做出正面评价。
  • 信息技术教育大全-操作系统大全

    信息技术教育大全-操作系统大全

    本书系统介绍说明了有关电子信息系统及操作系统等知识,希望对该信息技术有需求的读者能够从中得到帮助。
  • 从平凡到神奇

    从平凡到神奇

    本书结合多年的开店经验,全面地讲解了在淘宝网开设店铺的相关知识,为准备在淘宝网创业的卖家及刚刚创建店铺的店主,提供全面的开店和经营方面的指导。本书按照淘宝开店的流程安排内容,侧重每个步骤中的实际技巧。本书分3个部分:如何在淘宝开店、如何开好店、如何做强做大店铺。前3章介绍了在淘宝网开设店铺的基础知识,指导读者在开设店铺前做好准备工作,以及建立起自己的店铺,并且完成店铺的第一笔交易;第4章至第7章主要介绍了网店装修和推广的方法,以及网店的物流经验和技巧;第8章着重介绍了将网店做大做强的方法,帮助卖家在开店和经营中树立品牌意识,做大做强自己的店铺。
热门推荐
  • 意识国

    意识国

    罗克是美腾市警卫队57分队队长,本来过着舒适的生活,却在一次平常的旧城清空任务中突遇危险。不但57分队伤亡严重,还牵扯出美腾市繁华景象背后的重重阴谋。为了生存和正义,罗克开始绝地反击,然而自己的身世却随着调查变得越发扑朔迷离。-“做到和想到,到底谁更接近真实?”——罗克-艾普利尔本以为自己是个普通少女,但坎坷的命运却不断把她推向残酷的现实。为了找到并保护自己的所爱,即使面对无尽的绝望,这纤弱的少女开始了勇敢的探索之旅。为了找到那已在世上消逝的感动,艾普利尔决定拼尽一切去挽救,然而她所挽救的却不仅仅是那一丝真情。-“世界的崩溃已经无法阻止,不要把最后的良知也放进去陪葬。”——艾普利尔-
  • 万甲之王

    万甲之王

    一个废材少年,遇到一个落魄的太古神兽,从此他的命运被彻底改写。修炼王功,身披神甲,凭借一身惊世猛力,战遍地海空三界!
  • 电竞男神恋爱吗

    电竞男神恋爱吗

    [手游,绝地求生]乔诺,萌芽里的电竞女主播,可盐可甜可沙雕。谢卿煜,bp战队队长,一手狙,无人能敌,人却闷骚至极。因在无意间看了她的直播,他就倾心于她。因他的声音,让她就对他有了好感。因为游戏俩人有了相遇因为游戏俩人有了交际在某一天,bp战队拿到冠军后的采访中记者问:"谢神,拿到冠军后你有什么想说的吗?"谢神嘴角轻勾:"某人也应该是时候嫁给我了。"[作者新手,文笔不好。勿喷。]
  • 老婆大人,别想逃

    老婆大人,别想逃

    连谋,A市第一大家——连家的长子,正宗的太子爷;风澜,处于上流社会的风家的公主;当他遇见她将会是一场怎样的局面呢?
  • 天道昭昭之墨虎

    天道昭昭之墨虎

    八王之乱后,被封为归命侯的孙家临危受命,平定叛逆,却被朝廷猜忌,大肆杀戮,奋起反抗后只剩孙启夫妇逃生,隐世而居,在乱世中机缘巧合的加入墨家,却因墨家藏宝而卷入一场惊心动魄,荡气回肠的江湖纷争...
  • 一叶万界

    一叶万界

    漂泊虚空,一叶万界,既然老天给我了成为高富帅的能力,那么我还做一个矮矬穷的屌丝干嘛?为了朋友,兄弟,爱人和未谋面的亲人,我拼了。阻我路者,一剑斩之。敌人,过来,我们正面刚…………
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 掌天人

    掌天人

    你想过世界的主宰是如何看待它的世界的吗?以天地为棋盘,无数旗子起落。只有它隐于云端,笑看黑白争锋。
  • 人类的朋友:生物科学知识1(青少年科普知识必读丛书)

    人类的朋友:生物科学知识1(青少年科普知识必读丛书)

    本套丛书分海洋、航空航天、环境、交通运输、军事、能源、生命、生物、信息、宇宙等十册。收录词条约五千个。涉及知识面广阔且精微。所包含的内容:从超级火山、巨型海啸、深海乌贼、聪明剑鱼……到地核风暴、冰期奥秘、动物情感、植物智慧……;从登陆火星、探访水星,到穿越极地,潜入深海……既有独特的自然奇观,又有奇异的人文现象;既有对人类创造物的神奇记述,又有人类在探索和改造自然过程中面对的无奈、局限,以及人类对自然所造成的伤害,自然对人类的警告……
  • 异世的征召之旅

    异世的征召之旅

    因遭到女朋友抛弃,兄弟背叛。王明含恨自杀,不料穿越异世界,走南闯北的故事。