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

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”

大数据应用(下):应用驱动技术,DaaS创造价值 大数据研究与发展专题论坛:大数据在各领域中的应用及发展策略 雅虎新目标:欲收购照片分享网站Imgur 移动开发工具访谈《近匠》第01期:七牛云存储—BaaS进化论 ShareSDK:A轮融资到位!将推社会化评论SDK 70美元,你也能用Raspberry Pi做个专属iBeacon基站 7个鲜为人知却超实用的PHP函数 从管理远程式团队和分布式团队中所获得的宝贵经验 Netflix开源数据流管理器Suro Google新创意:天花板加麦克风 人脑植芯片 苹果获弯曲屏新专利 可给手机弄个大波浪卷 真正的跨平台硬件测试:3DMark已打通PC、iOS、Android 将Chrome浏览器变成终端工具 【开源推荐】AllJoyn:打造全球物联网的通用开源框架 21张图带你走进Google数据中心 Snapchat C轮融资5000万美元 投资方是Coatue Management 又一个被谷歌寄生的平台,Chrome应用启动器现来到OS X上 雷军遇上刘德华:创业、艺术、移动互联网 为了抗衡Android,传微软开始考虑WP和WinRT免费 维护代码库的五个精华实践 微软发布安全补丁 IE11.0.2随之而来 Qt 5.2正式版发布 全面支持移动平台 如何节约手游制作成本?揭秘CocoStudio编辑器强悍功能 市场竞争白热化:三大云服务商上演双十二“三国杀” UCloud联手盛科实现SDN硬件应用 AWS,还有多远? Instagram推新私信功能Direct:支持照片、视频和文本信息 微软CEO鲍尔默最后一次受访:我的正确决定远远大于过错 中国创新碰撞硅谷思潮, 2013云世界大会定义云时代 Mozilla与设备商、运营商成立开放Web设备联盟 研发周报:暴露程序员身份的8个行为 免费注册 Jboss 或 应用服务器 除了网上有,买d版的不知道有没有啊,下载太慢啊!! datagrid 中的一例为4位小数的数据,如何在datagrid设置使其值显示为带二位小数?? 让你的企业、产品、网站一夜成名 企业中一般如何写数据字典阿?急,在线等待 文件上传 如何将txt文件导入mdb文件之中,在线等,解决问题立即给分。 在菜单中打开MDI窗口,但是每一次点击,就出现一个新窗口,如何只出现一个? 大侠,救命啊,这个编译错误,折磨我好几天了,如何解决啊?????? 求C语言程序:从键盘上输入若干个证书,去掉重复的,将剩余数的前n个输出显示 新手发问(有关C#和MySQL数据库)! 试用期的前几天会被安排做什么?(对于一个没有一点工作经验的大学生) 如何合并两个字符串?急!!! 请问哪有jive 的中文版原代码下载啊?? jdon的压缩包不好使!!谢谢 关于静态方法! tomcat 406 错误 如何遍历任务栏上已经打开的程序呢? 动态添加commandbutton后如何写其clicked()的事情 今天晚上可能要時間長了,那個算法的流程你看看,服務器的負載太大了,不斷的連接,數據碎片太多了 把dataSet里的多个表插入数据库时,怎么把这多个表作为一个事务? tomcat报出406号错误 CDONTS.NewMail发送邮件? 继承的问题 我的问题 C++ Primer和C++ Programming Language 哪本好一些呢? 哪位朋友可以给一个PHP4导航栏的代码(1 2 3 4 5 6 这样的) redhat9.0是否支持ich5 在VS2002中可以用的设置星期格式的代码,在VS2003下不能用,为什么? 请教一个关于时间的SQL语句! 关于多级菜单问题 我的电脑里的chm文档打不开了,求救~~~~~~~~~~~! 购买QQ,共1000分(1) 大家帮忙分析一下 请教,关于“name not Unique in this context”的错误。50分,急!!!! 请教一个小问题 显示属性打不开? 购买QQ,共1000分(2) 很简单的问题,最好详细写listput 这个组件怎么用? 80分够不?在线等待中。 改好了告訴我一下,等0點去機房,這邊的認證服務器不動了,VMS系統我不懂 MIDAS 高手请进,这个问题在大富翁上出了600分,也没人拿到,难道真的没人明白吗? 女儿三岁生日,酬宾 关于PHP GD库的问题. jsp主要做什么的?菜鸟问题 为什么会重复显示两次? 怎样恢复类! 有没有人可以帮我的,55 如何把DBF文件导入到SQL2000里? 我想将一个字符串(用户密码)加密,有没有好的算法,请大家指教 熟悉化境编程界HTTP上传程序的请进! 我想将一个字符串(用户密码)加密,有没有好的算法,请大家指教 局域网搜索时,怎样连上要搜索的机子 chemistry help!在密闭容器中,一部分装入2.3g Na,另一部分装入HgO,同时加热两部分,若加热后容器内的空气成分不变(假设空气主要成分有N2和O2组成),那么装入容器中的HgO的质量为:A.21.66g B.20.06g a problem helpMost of old houses ____in the last five years .A pulled down B have been pulled down C were pulled downKey:Dwhy ,I need grammar "Toner for dry skin"和"emulsion for dry skin"的意思? 相信你已经收到我们昨天发的邮件 英语 charity workers will rase more c____ for the poor people.She folded up her clothes and put them into s_______. 求前度的黄靖的《You are in Everything I Do》和林二汶的After all,lukiya1013@yahoo.cn 求前度插曲《you are in everything i do》《after all》》《Little girl in the world》邮箱 404379940@163.com Did you call on Bob's on your way home?.是对是错,请指教. 某某公司新开了个子公司,旗下有三个部门:产品部(Product Department),销售部(Sales Department),办公室(Office).产品部共需100台主机,销售部50台,办公室48台.公司申请了一个网段192.168.1.0/24,现要求给这 I have a pencil sharpener 怎样变否定句为什么这样变详细说明 I h___ a stranger on my way home this morning. 俄圣彼得堡将遭强飓风袭击 涅瓦河水位阿富汗一男子被疑制造炸弹袭击事件 遭日本两男子涉嫌介绍未成年少女夜总会打日本一办公室里种大麻盈利逾千万日元 朱国林:转基因是“欺骗的种子,失窃的王湘穗:建议国家成立“转基因安全国家顾秀林:坚决不同意标注出售转基因食品中国拟规定非法添加等危害食品安全行为纽约华裔男子眼红表哥家庭幸福 杀其一日官房长官称日国家安保“司令塔”或用日陆自一军官偷拍女性裙底遭查 称大爱沪钱专线停运 轨交换公交可达各区互补为开放跨年晚会,盼明星耍出新玩意张弛:壮美山河怎么也画不够体彩公告没有标准化就难以金融化今日 国家公祭建筑“隐身” “卧底”自然梁楷的《雪景山水图》线下线上祭奠哀悼秋拍进入“上海时间”
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘