用Visual Basic实现多画面播放功能Word文档下载推荐.docx
- 文档编号:18808960
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:8
- 大小:20.84KB
用Visual Basic实现多画面播放功能Word文档下载推荐.docx
《用Visual Basic实现多画面播放功能Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《用Visual Basic实现多画面播放功能Word文档下载推荐.docx(8页珍藏版)》请在冰豆网上搜索。
该控件支持音频文件(.wav、.mid、.rmi)、影片文件(.avi、.mov、.mmm、.mpeg、.mpg、.mpa、.mpv)和vcd文件(.dat)等。
播放时若用鼠标右键单击画面,则可以直接对画面的播放、暂停、停止等进行控制,读者还可以自行在“属性”栏中对影片播放进行控制设置,诸如设置“播放次数”、“音量”、“影片大小(1/16、1/4、1/2、1、2倍和全屏”、“面板”、“颜色”、“过滤器”等。
这种技术的实现实际上是vb调用activemovie控制器来完成的,而activemovie控制器内嵌了microsoftmpeg音频解码器和microsoftmpeg视频解码器。
首先,我们建立一个“项目”,依次选择“项目/部件”,然后添加microsoftactivemoviecontrol(amovie.ocx)、microsoftcommandialogcontrol(comdlg32.ocx),控件即出现在“工具箱”中。
将上述两个控件加进窗体,再单击“菜单”工具栏,建立一个主菜单项:
“文件”(file)及其子菜单项:
“打开a画面”(opena)。
在opena中加入如下代码:
privatesubopena-click()
onerrorresumenext
commondialog1.filter="
videofile(*.dat)∣*.dat∣wavefile(*.wav)∣avifile(*.avi)∣(*.avi)∣moviefile(*.mov)∣(*.mov)∣mediafile(*.mmm)∣(*.mmm)∣midfile(*.mid;
*.rmi)∣(*.mid;
*.rmi)∣mpegfile(*.mpeg)∣(*.mpeg)∣allfile(*.*)∣*.*"
commondialog1.filterindex=1
commondialog1.showopen
activemove1.filename=commondialog1.filename
activemove1.height=form1.height
activemove1.width=form1.width
activemove1.run
endsub
这是对单个的activemovie1进行控制。
还可以在“文件”(file)中依次加入子菜单:
“打开b画面”(openb)、“打开c画面”(openc),并相应地加入activemovie2、activemovie3等多个画面,将上述程序代码略为改动后加入。
这样,当您按下f5键即运行程序,打开您想要播放的vcd文件就可以欣赏vcd了。
在屏幕上单击右键,还可以控制画面呢!
现在是否就满足了呢?
不行!
我们再增加一个用鼠标任意拖动屏幕的功能:
privatesubactivemovie1-mousedown(buttonasinteger,shiftasinteger,xassingle,yassingle)
activemovie1.drag1
x1=x
y1=y
endsub
我们还增加了一个定义任意播放时间的主菜单项:
“时间”(time)及其子菜单项:
“画面a时间”(settimea):
privatesubsettimea-click()
dimrasinteger
r=inputbox("
请输入时间(分钟:
0-60)"
r=r*60
activemovie1.currentposition=int(r)
activemovie1.run
currentposition是控制vcd播放的时间:
(1)activemovie1.currentposition=0(从头开始);
(2)activemovie1.currentposition=900(15分钟后);
(3)activemovie1.currentpo-sition=1800(30分钟后)。
依次类推,但是不能超过60分钟。
我们再增加一个主菜单项:
“屏幕”(screen)及其子菜单项:
“全屏a”(fullscreena),用来控制屏幕大小:
privatesubfullscreena-click()
activemovie1.fullscreenmode=true
activemovie1.moviewindowsize=amvmaximized
fullscreenmode用来控制画面是否为全屏,当它为true时则全屏方式播放vcd,为false时则取消全屏方式。
moviewindowsize也是控制屏幕的大小:
(1)全屏大小:
activemovie1.moviewindow-size=amvmaximized;
(2)正常大小:
activemovie1.moviewindowsize=amvoriginalsize;
(3)倍屏:
activemovie1.moviewindowsize=amvdoubleoriginalsize;
(4)1/2屏:
activemovie1.moviewindowsize=amvonehalscreen;
(5)1/4屏:
activemovie1.movie-windowsize=amvonefourthscreen;
(6)1/16屏:
activemovie1.moviewindowsize=amvonesixteenscreen。
我们可以随意控制屏幕了。
下面,让我们再把声音控制一下吧!
microsoftactivemovie控件2.0版的确比1.2、1.0改善不少!
1.2、1.0版在我的创新awe64顶级声卡中的表现很不尽人意,但2.0版却把我拉“科达”音箱功能在创新awe64的驱动下发挥得淋漓尽致!
想必microsoft公司对activemovie控制器中内嵌的mpeg音频解码器下了苦功!
我们在菜单中增加主菜单项:
“声音”及其子菜单项“增加”(soundadd棗快捷键设置为f4)和“减少”(soundduce棗快捷键设置为f5),分别用来控制声音的增强:
privatesubsoundadd-click()
activemovie1.volume=activemovie1.volume+100
privatesubsoundduce-click()
activemovie1.volume=activemovie1.volume-100
当然,我们还想增加“静音”(soundno)功能。
经我反复试验,当activemovie1.volume=-4000时效果最好!
我们还需要让vcd播放完后乖乖地“自动重播”(autoreplay):
privatesubautoreplay-click()
activemovie1.autorewind=true
’autorewind设置播放时是否“自动播放”
为了让vcd播放时交替“显示帧”(showframe)或“显示时间”(showtime),可在displaymode中进行设置:
privatesubshowframe-click()
activemovie1.displaymode=amvframes
privatesubshowtime-click()
activemovie1.displaymode=amvtimes
经过上面的设计,功能也凑合了。
行了吗?
别急!
我们还想将界面搞得漂亮一点。
例如,增加工具栏,加强鼠标右键的功能和画面中的双击功能等。
如果我们想在vcd画面中单击右键弹出菜单,则可添加如下代码:
privatesubactivemovie1-mousedown(buttonasinteger,shiftasinteger,xassingle,yassingle)
ifbutton=2thenpopupmenumenuok
其中,menuok是我们在菜单中额外增加的,子菜单内容可自定义(但要记住在设计时将名为“menuok”的菜单设置成不可见)。
例如:
(1)控制vcd“暂停”:
activemovie1.parse;
(2)控制vcd“运行”:
activemovie1.run;
(3)控制vcd“停止”:
activemovie1.stop;
(4)控制vcd“自动播放”:
activemovie1.autostart=true。
activemovie还有非常有用的其它属性:
(1)allowchangedisplaymode:
运行时是否允许改变显示的模式;
(2)allowhidecontrols:
运行时显示/隐藏控制面板;
(3)allowhidedisplay:
运行时显示/隐藏显示面板;
(4)appearance:
设置面板的外观(平面或3d);
(5)autostart:
设置打开vcd文件后是否“自动播放”;
(6)enablecontextmenu:
当在画面中右键单击时是否允许出现控制菜单(设成false时可以显示您自行设计的控制菜单);
(7)filename:
设置activemovie播放的文件名;
(8)playcount:
设置播放次数;
(9)rate:
设置播放时的速率,为1时为正常播放,大于1时为快进(过大时可能无声、无影);
(10)selectionstart:
设置播放的开始位置(缺省值为0);
(11)selectionend:
设置播放的结束位置(缺省值为-1);
(12)showcontrols:
显示/隐藏控制面板;
(13)showdisplay:
显示/隐藏显示面板;
(14)showpositioncontrols:
在控制面板中显示/隐藏位置按钮;
(15)showselectioncontrols:
在控制面板中显示/隐藏选择按钮;
(16)showtracker:
在控制面板中显示/隐藏音轨栏;
(17)tooltiptext:
当光标停留在画面时出现的提示文字。
我们除了可用microsoft的activemovie控件进行开发外,还可以用mciwnd控件来进行开发(可惜二者不能同时使用。
换言之,单纯用mciwnd无法制作画中画,但mciwnd可以和activemovie“和平共处”,这样我们就可以用mciwnd制作一个“特别版vcd”。
值得一提的是,mciwnd声音解码非常出色,不愧“师出名门”棗xing)。
这种技术的实现实际上是vb借助于xing的mci驱动程序来实现的,如果没有xing的dll程序运行时就会出错。
但这种技术实现得非常巧妙,比用vb中的ole技术来得更加隐蔽,可以设计成自己的vcd播放程序。
如果动画控件mciwnd不在工具栏上,可按如下方法进行添加:
(1)从“项目”中选择“部件”,再选中控件mciwndcontrol(mciwndx.ocx),mciwnd控件即出现在“工具箱”中。
mciwnd控件的属性有:
1)autosizemovie:
控制画面是否自动适应窗口,为false可能会遮掩掉部分画面,结合autosizewindows使用;
2)autosizewindows:
控制画面是否自动适应原来的影片的大小,为false时可能会挤压或拉长画面,使画面变形,结合autosizemovie使用;
3)defaultcontextmenuenabled:
当在画面中右键单击时是否允许出现控制菜单(缺省值为true,这样您将不能触发鼠标右键的mousedown、mouseup和dblclick事件;
设成false时可以显示您自行设计的控制菜单);
4)filename:
指定设备所要播放的文件;
5)menu:
显示/隐藏播放条上的控制菜单并设置在控制面板上单击右键时是否弹出控制菜单;
6)playbar:
显示/隐藏播放条;
7)positionstring:
返回打开的mci设备的当前位置;
8)record:
设置控制菜单的“保存”命令是否可用;
9)repeat:
设置播放时是否“自动重播”;
10)speed:
设置播放时的速率,为1000时表示正常播放,大于1000时为快进(过大时可能无声、无影),小于1000时为慢进;
11)tooltiptext:
返回/设置当鼠标停留在画面时的文本;
12)timefreq:
指定时间周期;
13)volume:
设置mci设置的声音大小,1000为正常值;
14)zoom:
设置画面的缩放率。
在新建窗体上添加一个mciwnd控件,并在控件上单击鼠标右键,选取“属性”(或直接在属性栏中进行设置),在filename中设置您需要播放的vcd文件,按f5键则开始运行。
然后单击“播放”键,就会自动播放vcd。
右键单击图像,可以直接对图像的播放、暂停等进行控制,并且可以在播放时直接设置屏幕大小(1/2屏、正常屏幕、倍屏)和控制音量,并对画面进行打开、保存、关闭、复制、配置(显示xing的有关信息)等操作。
但是,要想更好地控制画面,我们还得编程,程序参见activemovie控件的编程。
令人鼓舞的是,该控件几乎支持所有上述的多媒体文件。
在“命令”行中可直接输入丰富的mci指令(如基本的play、close、stop、open、info、capability、pause、put、record、save、resume、seek、set等等。
怎么样?
您的vcd播放器可以横空出世了吧!
?
如果您觉得意犹未尽的话,则还可以用windowsapi函数进行开发,只不过api所能控制的就简单多了(windowsapi函数也是借用mci驱动程序来实现的。
)
windows中mciexecute函数支持wav、rmi、mid、avi(可以有声音)等文件。
可在声明中加入如下代码:
privatedeclarefunctionmciexecutelib"
winmmm.dll"
(byvallpstrcommandasstring)aslong
privatesubform-load()
dimx
x=mciexecute("
playe:
\mpegav\music01.dat"
’如果您的vcd中mpegav目录下的文件名不是music01.dat,则改为avseq01.dat(下同)
按f5运行程序即自动播放vcd。
windows中mcisendstring函数同样可以播放上述类型的文件。
在声明中加入如下代码:
privatedeclarefunctionmcisendstringlib"
alias"
mcisendstringa"
(byvallpstrcommandasstring,byvallpstrreturnstringasstring,byvalureturnlengthaslong,byvalhwndcallbackaslong)aslong
x=mcisendstring("
0&
0,0)
按f5运行程序也自动播放vcd。
再给出一个小程序,运行时它能自动播放您的cd音乐,然后将控制权还给vb应用程序,但不影响计算机的其它操作(当然您的cd-rom中要有cd才行!
)。
(byvallpstrcommandasstring,byvallpstrreturnstringasstring,byvalureturnlengthaslong,byvalhwndcallbackaslong)aslong
s$="
playcdaudioa’
x&
=mcisendstring(s$,0&
上述程序在中文windows95osr2、VisualBasic中文专业版下调试通过。
多媒体是明天计算机的核心。
极好的声音效果和音乐、完全的运动视频和动画给我们所需的信息带来了生机和活力,很难相信没有图像、声音和动画的程序是完美的。
通过上面的讨论,我们会由衷地叹服:
在visualbasic中控制各种多媒体设备是多么地轻而易举,简直是信手拈来!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 用Visual Basic实现多画面播放功能 Visual Basic 实现 画面 播放 功能