说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

VB多媒体程序设计

HTML文档下载 WORD文档下载 PDF文档下载
VB多媒体程序设计
作者:余鑫铭
Visual Basic for Windows(以下简称VB)是Windows下的应用程序开发工具,它从根本上改变了传统的程序设计模式,可以处理文本、图像、动画、声音等多媒体数据,因而被计算机界称为“最富有创新精神的编程工具之一”。

本文假定你已基本熟悉VB的编程环境和简单的程序设计方法,介绍VB多媒体编程的一些基本概念和方法,让你也能体验多媒体程序设计的乐趣。如果你还未曾使用过VB(但肯定听说过),那么不妨赶快试一下,它的易用性会使你很快掌握的。
一、Visual Basic编程概述
对于Microsoft Windows的用户来说,很少有其它产品能像VB那样激动人心,其重要原因就是VB是第一个真正能让不熟悉Windows的人编写Windows应用程序设计工具。许多人都认为Windows程序设计非常复杂。其实,这只是针对用C或Pascal语言编写程序的人来说的。VB的出现为我们开辟了一条通向Windows程序设计高手的捷径。

在Windows推出初期,能够用来开发Windows应用软件的工具只有“Microsoft Windows Software Development Kit”,简称SDK。虽然用SDK开发出来的应用软件对于用户来说是相当出色的,但对于程序员来说却是一件困难的事。若使用SDK,程序员必须去编写创建窗口、菜单、字体、对话框以及其它各种对象,即使是编写最简单的程序。因此对于大多数人而言,使用SDK开发软件除了必须具备C语言的经验以外,还要学习SDK提供的600个低层函数,然后方能进行编程,即使对于专业程序员来说,这也是一项十分困难、费时的工作,这种复杂性使得很多有兴趣进行Windows编程的用户望而却步。所以,有些程序员调侃SDK是Super Difficult Kit的缩写,这或许有些夸张,不过也很贴切地道出了使用SDK编程的复杂性。

VB的出现,彻底地打破了SDK塑造的神话。使得以往要使用SDK才得以设计Windows应用软件的“石器时代”已经过去。通过VB,任何人都可以享受Windows程序设计的乐趣。VB的“可视性”和“面向事件”的特征是简化Windows程序开发的关键。简而言之,在VB环境下,程序员可以用图表来开发应用程序,只要用鼠标进行选中或单击操作,就可以从菜单中选中对象、控制项和属性等。它把600个Windows的应用程序编程接口(API)中的大多数功能函数抽取到高层,这样允许程序员直接使用Windows函数,如建立按钮、对话框、菜单等,而无须SDK。程序仍然可以通过一个动态链接库(DDL)来调用底层的Windows API功能函数。

VB的程序设计风格与传统设计方法不同,它是面向对象和事件的程序设计方法。面向对象是近年来出现的程序设计技术,它是一种全新的设计和构造软件的思维方法。在面向对象的程序设计中,“对象”是系统中的基本运行实体。例如窗体和控件,就是VB的对象,VB中的对象是由系统设计好提供给用户使用的。对象建立、移动、增删、缩放操作也是由系统规定好的,这比一般的面向对象程序设计中的操作要简单的多。

VB是采用事件驱动编写机制的语言。传统编程使用的是面向过程、按顺序进行的机制,这种编程方式的缺点是写程序的人总是要关心什么时候发生什么事情。而在事件驱动编程中,程序员只要编写响应用户动作的程序,如选择命令、移动鼠标等,而不必考虑按精确次序执行的每个步骤。当事件由用户触发、或由系统触发,对象就会对该事件作出响应。

如果你掌握了Basic编程,这并不意味着你就会使用VB,因为VB中有许多Baisc中所没有的新概念和新方法。从Basic到VB,最大的概念跳跃是窗口,不是语言本身,以及应用程序开发中的图形化构思,而不是面向代码的构思。

VB在多媒体应用软件开发方面有着良好的前景。目前多媒体制作工具基本上可分为两类,一类是专为开发多媒体节目和电子出版物而设计的所谓多媒体编著工具(authoring tools);另一类是通用的软件开发工具,如Windows下的Visual Basic、Visual C++等。采用通用程序开发工具的优点是灵活性高,软件运行效率高。在需要大数据量处理及查询时常常采用通用程序设计语言,如百科全书类的节目大多是用Visual Basic开发制作的。 之所以选用VB开发多媒体系统,主要是可用专业版中所提供的MCI.VBX(Media Control Interface:媒体控制接口)的控制对象。通过MCI.VBX,就可以用指令控制各种多媒体外部设备并读取各种多媒体系统所需的文件格式。

虽然VB具有以上所述的种种优点,但与其它的一些基于Windows的编译器(如Borland的C++或Turbo Pascal for Windows)相比,后两种语言也有比VB语言出色的地方。

首先,C++和Pascal为我们提供了更多对计算机的控制,可以用来实现对计算机底层功能的控制和调用,因而可用来设计系统软件。例如BELL实验室用C来编写UNIX操作系统,苹果公司用Pascal 编写Macintosh操作系统。而若用VB写操作系统的话,就好比乘热气球登月一样困难。

其次,VB的Custom Control(用户控制对象)概念是近来导入市场非常成功的对象控制技术,但目前VB还无法建立自己的用户对象。

第三,C++和Pascal提供了可移植的交叉平台,像IBM、Macintosh、Amiga,直到VAX小型机和Cray巨型机,都可以运行C++和Pascal程序,而VB目前还只能在MS DOS和Windows下运行。

尽管VB还不是尽善尽美,但瑕不掩玉,随着VB版本的不断升级,我们相信其性能会更加完善。


--------------------------------------------------------------------------------

二、 MCI程序设计初步


设计多媒体程序,关键是对多种媒体设备的控制和使用,在Windows3.1和Windows95系统中,对多媒体设备进行控制主要有三种方法:

第一种方法是使用微软公司窗口系统中对多媒体支持的MCI,即媒体控制接口,MCI是多媒体设备和多媒体应用软件之间进行设备无关的沟通的桥梁。在Visual Basic 3.0和4.0版本中,MCI都得到了很好的支持。

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

第三种方法是使用OLE(Object Linking & Embedding),即对象链接与嵌入技术,它为不同软件之间共享数据和资源提供了有力的手段。



下面分别介绍如何利用这三种方法进行多媒体程序设计,首先介绍MCI的有关概念及MCI.VBX控件的使用。

1.什么是MCI

MCI(Multimedia Control Interface)是微软Windows定义的多媒体接口标准,MCI 接口包括了CDAudio(激光唱机)、Scanner(图像扫描仪)、VCR(磁带录像机)、Videodisc(激光视盘机)、DAT(数字化磁带音频播放机)、DigitalVideo(窗口中的数字视频)、Overlay(窗口中的模拟视频叠加设备)、MMMovie(多媒体影片演播器)、Sequencer(MIDI音序设备)、WaveAudio(波形音频设备)、Other(未定义的MCI设备)等多媒体的主要产品,支持环境是Windows 3.1及Windows 95版本。MCI的最大优点是应用系统与设备无关性,对于标准多媒体设备,安装相应的Windows的MCI Driver,Windows即可对该设备进行操作访问;对于非标准的多媒体设备,只要有厂家提供所配的MCI Driver也一样可以操作。由于MCI与设备的无关性,程序员在多媒体应用系统的开发中,无需了解每种产品细节,就能开发出通用的多媒体应用系统。那么在VB中如何使用MCI呢?它是通过VB控件提供的功能来实现的。

2.VB的控件

VB中附有许多具有特定功能的控件(Controller),而每个控件都可以创造具有特定用途及功能的对象。要想利用VB进行多媒体程序设计,必须熟悉和掌握这些控制的作用和功能。在VB中,大部分的控件均放在工具箱中,每个控件由工具箱中的一个工具图标来表示。

工具箱中的工具分为两类,一类是VB本身固有的,一类是扩充的。由固有的工具组成的工具箱称为标准工具箱,工具箱可以扩充,以便把更多的工具包含进来。为在工具箱中增加一个扩展控件,必须装入相应的控件支持文件,其文件的扩展名为.VBX。当某个扩展控件增加后,该文件的名字就出现在项目窗口中。项目窗口中的.VBX文件只与扩展控件相对应,标准控件没有与之对应的.VBX文件。

3.MCI.VBX的使用

MCI.VBX是在VB专业版中所提供的一个控制对象。VB借助于此控件的配合来达到控制多媒体设备的目的,是用户对多媒体对象进行控制的一种最简单、最容易的方法。一般在安装完VB专业版时,会将这个控制对象拷贝到Windows下的System子目录里。在使用MCI.VBX 之前,应首先安装并设置好多媒体的系统环境。

当我们进入VB3.0时,ToolBox(工具箱)中并不会直接出现MCI.VBX的图标。这是因为AUTOLOAD.MAK这个“自动载入”文件没有将其包含进来。在VB的目录中找到这个文件,然后用Windows的书写器进行编辑,将“MCI.VBX”加在AUTOLOAD.MAK文件的未尾。也可以选择[File]菜单下的[Add File]选项,将Windows\System 子目录下的MCI.VBX加进ToolBox后,才能在VB中控制多媒体外部设备。将MCI.VBX加入到ToolBox之后,你就可以看到ToolBox尾部已经增加了一个图标。

4.MCI.VBX的控制按钮

如同使用其它控制对象一样,首先以鼠标双击ToolBox(工具盒)的MCI图标或拖至Form(窗体)上, 并调整好Form的大小,这时我们可以看到,在窗体上(Form)上出现了九个按钮,这就是多媒体控制对象的外观。

MCI控制按钮定义如下:Prev(移前标)、Next(移后标)、Play(播放)、Pause(暂停)、 Back(倒移)、Step(前移)、Stop(停播)、Record(录制) 和 Ejec(退出)。使用MCI控件方法如下。

(1)MCI控件在设计或运行时可以是可见或隐藏的;其按钮功能也可以通过单击鼠标Click事件重新定义。

(2)需要使用MCI按钮功能时,必须将该按钮的属性(Visible和Enabled)置为True ;若不需要该按钮时,必须设计Visible为False;若使该按钮功能当前无效时,设计Visible为True,Enabled为False。

(3)MCI 扩充版支持一个视窗控制多个MCI 设备。

5.初试MCI.VBX

在MCI.VBX的支持下,我们对多媒体设备的控制过程简单得令人难以置信,下面我们先创建一个CD音乐播放程序来体验一下。

在Form_Load()事件过程中加上下面两行代码:

MMControl1.DeviceType=“CDAudio”

MMControl1.Command=“Open”

另外,我们在Form_unload事件过程中,加上一行代码:

MMControl1.Command=“Close”

TCL联手Mozilla,HTML5智能电视真的要来了! 先睹为快:Unity亚洲开发者大会虚拟游览展示 OSTC·2014 演讲日程出炉,Perl创始人来了! Unity将收购Applifier,并引入Everyplay和GameAds两大平台 《近匠》从Cubieboard到radxa:汤亮的第二次硬件创业 九头蛇与大象之争,Hydra或将取代Hadoop 喜讯:中国安全团队Keen成功在Pwn2Own 2014黑客大赛上攻破64位Mac上的Safari OCP黑客马拉松冠军:24小时头脑风暴背后 新时代应用程序设计及MongoDB的十个深入理解 借助“开源”东风 英特尔打造卓越“软实力” 深圳综合交通设计研究院张鹍鹏:智能交通设备领域已成红海 信息化是发展趋势 25个可遇不可求的jQuery插件 Web设计中对视差设计的误区 直接拿来用,九个超实用的PHP代码片段(二) 一周消息树:小米染指平板电脑凶多吉少 移动周报:Xcode 5.1更新、CarPlay揭秘,Apple很忙 可穿戴领域,创业公司的掘金点?还是滑铁卢? 搜狐SendCloud2014运维技术沙龙拉开帷幕 一周热点:选择Go语言的12个理由,九头蛇与大象之争 中国云计算大会PPT集萃(二):十位技术大牛分享平台打造技术 延迟250毫秒损失数百万美元,Hadoop系统该如何应对实时任务 IBM成立展示中心扩展大型主机的Linux开放生态系统 SDN解决方案总结:OpenFlow、虚拟机、OpenStack和VXLAN/NVGRE 第六届中国云计算大会将于5月20-23日在京隆重召开 大数据实战:站在JMP分析平台上的FIT足迹识别技术 首届SAP d-code大会在上海举办 【OSTC讲师专访】ZoomQuiet:因商业化而开源是中国开源界最大的囧处 亿元资金扶持+联手100家VC,腾讯的雄心壮志 美国史上最大IPO 能给阿里巴巴带来什么? 买Windows平板而非iPad或Android的十大理由 Framework7:不会Objective-C,也能开发iOS7应用 c#和asp.net有什么关系? 串口打不开怎么办? 请问各位大虾,怎样在java里打开一个IE窗口。 网络问题! 我的浏览器怎么了? 在局域网中,如何在代理服务上作手脚,使处同一局域网某些人可以上网,某些人不能上网。各位帮忙! 如何制作安装盘,我的做好了,为什么到别的机器上安装不能运行 急急急·高手帮忙,在Java中引用C++的动态链接库,中文字符串参数变成乱码,怎么办? 有前锁问题 找个扫雷源程序! 发送邮件时,对现在大部网站要求的smtp认证,如何处理?急用! 连接的ACESS数据库可以是EXCEL的链接表吗? 神呀救救我吧? 谁知道哪有Delphi写的代理服务器源代码? 关于MFC的动态生成对象的问题 有谁把平台转向XP了,不知在这种新环境下开发出的软件在别的机器上会不会有问题(包括运行库及打包) 帮帮我,好吗?(谢谢大家了) 千山、恶人、老鱼、念雪、浪人及各位大虾,小弟也遇到了Dll引出MDIChild的问题,但是在linux下,不能正常退出,请各位帮忙,多谢了。 我的浏览器怎么了?? 心情好到最高点!放分!!!!!!!!!! 大家一定要帮帮我~~~~~~~~~ 一个关于重载的问题! 不活了 不活了.... 在VC中讲Edit控件的属性设置为ReadOnly后,如何改变控件的背景色??? 深圳的户口政策以及用人单位对户口的态度是怎样的? 200分求购一个VB写的用mciSendCommand播放VCD或者AVI的例子!!!!!!!! 请问大家认为数学对程序员来说是一个怎样的地位................ 紧急,求救!!!!!!!!!!!!!!! 请问在GSM MODEM编程中,如何知道短信是否已发送到目的手机! 急:为什么都用uses包含了,还是报告说没定义变量? 删除表时遇到的问题 *************stringgrid的问题?????? 再问几个问题 如何查找csdn上网的朋友 用 ADO 对 Oracle blob 字段读写 (谁能解决送1000分) 请问oracle9i比oracle8i多了那些功能?这个产品是否成熟? VB读串口数据 请问,你们做项目一般用什么分析设计方法,生命周期法? 快速原型法? 面向对象分析设计法?? 请问如何用query删除一个记录???????????????????????? 请问那里可以下载到雷电(指点一下也给分)……………… 初级问题,关于硬盘文件格式转换,请多多帮忙,谢谢! 那里有比较好的软件公司 毕业设计选题 谁有读写注册表的原代码? 请问那位大哥有画切线的C语言算法 如何使页面上的按钮被点击后自动打印当前页面? 哪儿可以下载星际争霸? 注册表中如何建新的主键?30分 寻求在tc下设置640*480(256色)模式的代码 DELPHI 真的好难 哪里有支持ASP+access的免费空间?!!30分 世界在我生命中究竟是什么颜色拜托各位大神我要的世界 地球是什么颜色的啊大神们帮帮忙地球是圆的吗?它到底是什么颜色的呢? 读了这个故事,你有什么感悟老舍的生活一直不富裕,他曾说世界上“最伟大的一个字——‘饭’——给我时间与饭我能够写出较好的.”在抗战时的重庆尤甚,那时老舍特别关心好友吴组缃先生 生命究竟有多长? 地球是什么颜色的谢谢了,大神帮忙啊 灯光可以代替太阳光吗一般的花草都喜欢阳光 放在室内的盆栽很少能见到阳光 那么灯光对它能起到光合作用吗 生命究竟是什么?拜托各位大神 地球是什么颜色的?谢谢了,大神帮忙啊 蚊子可以区别太阳光和灯光?蚊子都是白天休息,晚上出来的多.但好像和光线关系不大啊? 20号钢正火为何种组织组成物? 20%珠光体还是20%铁素体? 什么原因造成钢的碳含量减少?材质证明书中的保证值是0.04%,经过焊接后,做化学分析试验,发现碳含量低于0.40%,母材和焊材的碳含量都在0.40%以上,为什么会出现这样的结果? 从物理学角度阐述一下摄影的柔光灯的柔光和太阳光和灯光有什么区别? 生命到底是哪里来的拜托各位大神 我的多彩未来 作文 怎么写啊各位大神帮帮我啊 太阳光与灯光有什么具体的区别?请详细点.谢谢. 低碳钢的哪种组织为珠光体+铁素体 作文:其实,我很××拜托各位大神 活性混合材料和非活性材料掺入到硅酸盐水泥中各起什么作用? 是作用!求解答呀 特别是活性材料的作用 要怎样去看待人生与生命?迷茫,对人生与生命的观点 起点小说大神们用什么软件写作啊?起点网写小说很麻烦,你看要每次跟新字数都要确定多少多少,还有毕竟写小说,自然要方便快捷的. 掺混合材水泥和 硅酸盐水泥在性能上 有何差异?并 请 说明原因.( 要 过春节的感受是感受,写出有多高兴,不是在春节里发生的事,100字左右,是70字左右. 爱国人物的故事的读后感要500字左右的,不然不给分.小学生能写的范围之内 水泥混合材料可使硅酸盐水泥的性质发生什么变化 过春节的感受 作文 600字的 写的好给10个奖赏 《中国近代爱国主义人物故事》读后感 名人爱国故事读后感!联想到别的故事! 这个字的颜色是怎么弄出来的 照射到地球的太阳光几乎是()色的 太阳光和灯光有什么本质的区别?对植物的效果是一样吗 这个字不是打的,是我家族谱上的一个字,拍照下来的 不认识 太阳是什么色 硅酸盐水泥的技术性质有哪些?最好说的详细一点 求教大神“涐”这个字怎么打 太阳什么色的 太阳光与灯光性质有何区别??大哥大姐们帮帮忙! 20钢碳含量是多少 硅酸盐水泥强度等级确定时标准试件的尺寸 电灯光与太阳光本质的区别是 这个字读什么? 硅酸盐水泥强度的发展规律怎样 建筑工程材料 圆的直径是20厘米,求中间正方形的面积 这个字到底叫什么 怎么打出来的 太阳光由7色组成,看起来是白色,而为什么将7种颜料混合却成黑色了?怎么才能用颜料混合成白色?我要的是怎么才能配成白色?用什么颜料才能配成白色 下图中圆的直径是20厘米,求正方形的面积!急 2015新年感言500字与生活关联以学生的角度来写 太阳光由红橙黄绿青蓝紫7色组成,看起来是白色,而为什么将红橙黄绿青蓝紫7种颜料混合却成黑色了? 爱国故事读后感(最好是钱学森得) 超急啊!今晚就要啊 求新年感想作文一篇500字左右? 为什么硅酸盐水泥和普通硅酸盐水泥早期强度低,后期强度高?抗腐蚀能力强?水化热低? 关于爱国的读后感有关爱国的文章读后感,例如:读《詹天佑》有感、读《祖国,我终于回来了》有感等等.每段的段末要写出段意. 蓝光照在白纸上,再通过红色玻璃看这张白纸是什么颜色?说出理由 钢铁分类方法? 掺混合材料的硅酸盐水泥耐水性好么 西游记心得体会12则.挑几个故事写比如自己的看法感悟启发,每篇300字左右,还有2012的春节联欢晚会300字西游记心得体会是6则,不是12则. CF里的彩色字体跟彩色昵称都有哪几种颜色!CF里的彩色字体跟彩色昵称都有哪几种颜色!请具体点!有几种分别是哪些颜色! 读《爱国故事》有感 求一篇关于学雷锋心得,要300字左右的 地球是什么颜色的?大神们帮帮忙 读什么故事有感
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn