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

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”

VB中的进制转换是怎样的? VB中调用带参数存储过程的实现(数据库) VB中感叹号“!”与圆点“.”的用法差异 VB中如何实现注册表的读写 VB中实现“擦视”技术 Visual Basic 2000年问题 Visual Basic 的未来 Visual Basic 命令分类表 Visual Basic三级跳 Visual Basic使用技巧 Visual Basic中的子类处理技术 Visual Basic中软件封面技术探秘 VisualBasic 软件设计中的几个问题 Windows 95/NT 运行了多长时间 -VB资料 Windows 的登录资料库 -VB资料 把回车键变成TAB键-VB资料 把文件置入到Text或RichText中 -VB资料 避免按 [ENTER] 回车键产生的“嘀”声 -VB资料 避免使用全局变量-VB资料 避免装载多份应用程序-VB资料 不定个数的参数 -VB资料 不在任务栏中显示,只能在Ctrl+Alt+Del对话框中显示或者干脆什么也不显示数 -VB资料 处理 Dropdown List型 Combo的录入问题-VB资料 VB创建和删除快捷方式 从程序中生成 exe 文件 -VB资料 打开和关闭CD-ROM 驱动器 -VB资料 打开和关闭其他应用 -VB资料 打开一个超连接 -VB资料 当前操作系统的语言集-VB资料 当前系统目录-VB资料 得到磁盘上剩余空间的值-VB资料 知道26号放假!高兴!!放分!! 问个瓜问题 推荐几个好的编程论坛(中文的),不看的后悔呀!请不要移贴或删除! 关于脚本与代码的通信问题。。。 用WiseInstall作安装程序,怎么让可执行程序自动识别专用的文件,即点击专用文件即可用对应执行程序打开 在POWERDESIGN中将数据库设计倒入WORD报表的中文乱码问题 访问数据库时遇到的问题 如何把Excel的图表另存为图形文件?? 紧急求救!!(关于调用exe的问题) 关于动态删除记录的问题,大侠指点!!! 请问如何把用户上传的文件(所有)都保存在sql里面? 在POWERDESIGN中将数据库设计倒入WORD报表的中文乱码问题 时间设置 年关已到,谁有工作总结的模扳,给小弟发一份。 今天女朋友回家,放分,终于可以自由几天了,头一次放分,只有这么多了 生气!我真的很生气!现在的人怎么都这样? to shibichen(务必请近来一下) 在VC中怎么写关于猫的AT命令的程序?最好又程序。分数不过另外给 问一个傻傻的问题 帮帮忙,我送什莫礼物给女朋友好呢? 如何将选择出的内容存入文本文件??? Delphi中数据库操作Filter的原理,他和SQL语句查询输出的结果有什么不同? 在EXCEL中如何实现分两上SHEET打印!? 帮帮忙,我送什莫礼物给女朋友好呢? 几个linux下典型的应用问题,,高手新手都请进 ;-) 有关IE的奇怪问题 困扰很久的问题了:conn.execute为什么有是不能执行? 请问当一个页面中某个frame包含的网页不断重复刷新的时候怎么不让IE下面的刷新条滚动? 为什么局域网内看不到网站,而在广域网内却可以看到网站! 哪位用过这个控件的3DES,SHA1算法?我调不出来,急~~~~~:( delphi中类似于On Error GoTo的语句是什么 采用缓存模式的Dataset如何一次性进行所有行的数据合法性校验? 运行程序时如何交换数据窗口中的两列的位置呢? 两个sql语句一样只有条件不一样,如何取并集? 无法设置DatabaseName是为什么? 那位高手能给出创建弹出窗口的比较完善的例子(最好经过测试)? 在目前共享软件怎样才能获取美元?除了有自己的产品外,在营销中那些条件是必备的? 我有oracle考单两张1000元/张有需求请email给我 在POWERDESIGN中做的数据库设计倒入SQL中,能否保留住NAME栏的中文注释? ASP与存储过程 请教: 请熟悉C#和COM+的朋友进来,保证散分 请问如何在对话框中加入工具条 关于打包的问题???急!急!急! 怎么清除mysql在2000 关于DNS的问题!那位大侠指点一二~~~ 这个sql如何写当A table 的field1的值符合一定条件时检索条件为一种情况,当field1的值为另一值时,检索条件为一种情况 初来宝地,散分! XML模糊查询 在POWERDESIGN中做的数据库设计倒入ORACLE中,能否保留住NAME栏的中文注释? 我有两张oracle考单1000元/张 朝鲜纪念前最高领导人金正日逝世一周年宁波一栋居民楼突然倒塌致1人死亡盘点近年震惊全球的校园枪击案北极洋惊现大片“霜花”似英国夏日花朵60岁仍未婚 朴槿惠当选韩国首位女总女子闹市跳脱衣舞 周围男子扔钱起哄喊探秘公交公司点钞员 数钱数到手抽筋探秘公交公司点钞员 数钱数到手抽筋男子求爱被拒后藏在女孩床下欲拍艳照内蒙古四成面积雪情严峻吉林珲春再现东北虎下山吃狗事件英国奢侈品店圣诞促销引华人顾客抢购吃方便面中毒 西安封存近4万袋耐寒奇人挑战极限 比基尼美女体验“冰青海:7名留守儿童的新年心愿杭州连下32小时大雪 雪西湖美景再现螃蟹西红柿同食产生砒霜不成立印度男子14万打造纯金衬衫求偶长沙男子公厕值班一夜 醒来头发全没了女子阿胶枣中吃出虫 厂方称是蜜蜂公交追尾“拉粪车” 致乘客满身污秽两名外国记者在阿富汗东部遭枪击长沙市望城区清理行政审批项目让权力“(网闻求证)安徽宣城一国土所副所长因田东县朔良镇开展大型禁毒宣传教育活动(清明节新华调查)“日常冷,节日热”(服务、汽车)部分用户称艾瑞泽7前舱碧桂园助学扶贫活动获江苏省肯定(图)实拍广东弃婴岛前的离别纸质祭品花样翻新 资源浪费破坏环保美国氮化镓技术获突破 可显著减少雷达深圳器官捐献量全国第一 公民可网上登深圳一道路塌出两深坑 70立方米土方个人信息登记不准确 交警提醒车主尽快深圳路边停车一天最高收费265元 遭暴雨停课听气象局的? 代表建议教育局广东小作坊食品摊贩可以做盒饭 不得在清明假期高速仍免费 出深高峰期间将严日美防长将举行会谈 或探讨解禁集体自河北发布清明出行提示 多条高速将迎高墨尔本海滩烟蒂多 民众期盼严管澳大利亚搜寻马航失踪客机黑匣子 电池
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘