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

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”

Cookie时代将结束:微软将开发跨PC、移动和Xbox跟踪技术 Web设计里需要避免的八大糟糕趋势 Groupon从ROR迁移至Node.js,响应速度大幅提升 腾讯云的Container实现 专为物联网打造的数据库TempoDB获得320万美元投资 MongoDB成为首位10亿美元初创,功臣可归功于Oracle? 程序员遇到Bug后的30种常见反应 扎克伯格豪掷3000万美元购四套房 梅耶尔和拉里佩奇也居于此 IBM研究人员:仅200条微博 就可构建人格剖析图 MDCC重磅讲师:Pebble CEO Eric Migicovsky 历届中国大数据技术大会PPT精粹(一) 通讯也“跨界”:几行代码,API+SDK,用PaaS实现移动互联 MIT风景线:丝绸雕塑、VR代码、机器人、智能按钮及保时捷 深度学习新算法,完成字里行间的情绪识别 如何在开发项目里和难缠的程序员合作? 移动周报:七大无需编程的DIY开发工具 手把手教学,用jQuery Mobile创建Web App 别惊讶,Android绿色机器人标志灵感来自于卫生间标识 Google TV更名为Android TV 智能电视的路不好走 CTO如何避免决策失控(四)——通盘考虑 做到技术业务不分家 重塑世界!历届MDCC重磅嘉宾演讲大回顾 从贝佐斯的14句言论看商业成功之道 5大宠物可穿戴式设备 Google CIO Ben Fried谈内部工具文化 【开源专访】Fourinone创始人彭渊:打造多合一的分布式并行计算框架 API优先架构或者胖瘦服务器之争 Windows Phone 8迎来Update3更新:支持更大屏幕 更多磁贴 AMD院士站台 异构计算与OpenCL编程师资培训首站清华开讲 Twitter、Square开创者Jack Dorsey的奇趣人生 利用CSS、JavaScript及Ajax实现图片预加载的三大方法 经典电影里的数学 请问ACCP和高程考试相比哪个更有份量? 求LeapFTP V2.7.3.600的注册码 5月6日我来CSDN的二周年,散分,纪念。。。。 listbox (湖南)今年非典搞得这样,会耽误报高程吗?今年有人报了吗?怎样报的? ComboBoxEx在 SetImageList 时出错 在DBComboBox中脸上数据库后,为什么进行选择时会出现“违反了Primary 约束“ 关于传递多值的问题 如何从recordset得到数据库的行号 用<%@ include file="xxx.jsp"%>出现的怪问题!求教 有关server.mappath()的问题 J2EE基础问题两三问,追加200分。 问题很简单,但我很急,请帮忙各位。 可用的UDDI 急救!自动隐藏Panel 帮忙 哪里有数据库系统开发的文档下载 急待解决的问题 请问从socket发信息,连续发送几个小数据包出错的情况!! 紧急问题,在线等待! 救命——存取违例 请问在VB中使用DAO控件怎样打开ACCESS数据库? 请问装vc6的sp5主要有什么作用啊 双网卡的局域网,如何让 CSocket 使用指定的网卡与另一电脑通讯? SQL删除不了相同的记录 JBuilder7中的中文问题 谁知道计算机的本地时间与系统时间有什么区别? 请问如何实现垂直显示文字?` JDOM高手看过来! 请问怎么在vb中调用纯c接口的api并实现多线程 如何实现任意长整数的运算? 程序移植,有多大的工作量??? 哪里有InstallShield Express的中文包D6自带的那个。 HELP ME! 请教:API中的数据类型与pb中的数据类型的对应关系 第一个进来给100分!哈哈,高兴!! 高分求翻译, 高手请进,就一句 TeeChart在那个组件栏中?我怎么找不到?(我是6.0的版本) 在哪里下载KPT7.0? 存储过程问题讨论!高手请进. 高人指点几行代码不难,只是我不懂 紧急问题,在线等待! 急问:在DROPDOWNLIST中如果只有一个下拉选择项怎么无法相应SelectedIndexChanged事件?该怎么做? 关于用DataGrid显示数据的问题 请高手相助 示例解析sqlDataAdapter中tablemappings的使用(在线给分)急!!! 我想让一条记录的其中四个字段成为ComboBox中的四个选项,如何做啊? 请问.netFrameWork里面没有提供Chart的类。 关于驱动编译的一个问题!100分! 十行小程序 想做一个VC6.0那样的WorkSpace,谁有这方面的经验或代码? 斯诺登将在俄“遥助”德国 作证“监听2013年是“男”还是“女”?哈里王子遭英国报刊窃听房租过高 白领伦敦上班巴塞罗那居住坐温州16家企业3500万元建起污水处浙江290多家企事业单位赴沪求贤70杭州建兰中学千岛湖建新校 2014年美一涂鸦街区将拆迁 艺术家联名告开发媒体揭秘美国监听手段:大使馆屋顶材料美无人机操作员:像僵尸一样执行任务 “罗莎”向偏西方向移动 东部地区雾霾杭州小区取消固定车位引争执 一位大伯杭州大妈100岁生日 家庭四世同堂齐法国总理呼吁民众避免使用暴力手段来解美无人机操作员:遥控飞机阿富汗杀人 杭州国际马拉松赛今天上午开跑 景区单委内瑞拉总统谴责推特强删其推特粉丝媒体揭秘美国监听手段:大使馆屋顶材料美无人机操作员:操纵飞机在阿富汗杀人美机场枪击案导致1死7伤 疑犯称对政日议员不顾禁令执意访朝 或受到处分央行控风险重点要放到传统银行17岁女孩产婴流落长沙 好心人捐款救100余件意大利珍贵画作抵长更正与说明实行“明码实价”[异动股]建材以旧换新 最高补贴5000元器官捐献志愿者登记网站开通 曾志伟成三诺生物:一季度业绩预降新《消法》八大亮点“约束”家居业(2美国安局可监听一国100%的电话通话尾号限行再延续一年长沙株洲被暂停新增建设用地审批海航成立首家“空中医院”有个洋名字,就能卖高价?普通劳动者落户北上广希望在哪里不玩手游,华天又瞄上网游“九头鹰口罩”承认不合格埃塞基耶尔·洛佩斯 带着画作来“冒险澳“逃兵”赴叙打内战身亡建材经贸大厦新开橱柜展厅
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘