VB:如何向richtextbox中插入flash影片

这篇博客介绍如何在VB环境中向RichTextBox控件中插入Flash影片。通过查询IOLEOBJECT接口并利用ShockwaveFlash1.object实现。文章中详细阐述了实现过程,包括可能出现的问题及解决方法,如手动刷新来更新显示。
摘要由CSDN通过智能技术生成

    这个问题是在看了http://blog.csdn.net/dtianx/archive/2004/11/17/184949.aspx这篇文章后产生的,

当时的想法很简单,就是网上还找不到类似的VB代码,于是就想写成一个VB实现之类的东东,改写的过程很顺

利。但改完之后就想到能不能插入flash影片呢,于是就有了这篇东西。

    从理论上说COM对象只要实现了IOLEOBJECT接口,就应该可以插入到richtextbox中。所以我们首先就要查

询flash对象的IOLEOBJECT接口,在vb中QI是通过将子类赋于父类实现的,为了实现QI大家要找一个实现了

IOLEOBJECT接口的tlb文件,我是从http://www.mvps.org/emorcillo/download/vb6/tl_ole.zip得到这个tlb文

件的,我一直在用它,用它的原因很简单,就是因为喜欢它封装的一些api的声明(当然用别的tlb文件也可以

,甚至不用tlb文件也可以,不过问题就扯远了,这个话题以后有机会再说吧),先在窗体上画一个flash控件

和一个按钮,然后写代码:
Private Sub Command1_Click()
    Dim mIoleObject As IOleObject
    Set mIoleObject = ShockwaveFlash1
End Sub
    看到这里,你可能会有疑问,为什么不这样呢:
    先添加对flash.ocx的引用(注意是引用),然后:
    Dim mFlash As New ShockwaveFlashObjects.ShockwaveFlash
    Set mIoleObject = mFlash
    这样不是可以成功QI吗?没错,的确可以成功QI,但这种方法添加的flash属于OLE静态嵌入,只能有一个

flash控件处于活动状态,所以我没有采用,事实上按照这种思路做下去实现的效果,使用richtextbox控件自

身的方法就可以实现,James0001给出了代码:
Private Sub Command1_Click()
    Dim objOle As IOleObject, objFlash As Object
    Set objOle = RichTextBox1.OLEObjects.Add(, , , "ShockwaveFlash.ShockwaveFlash")
    Set objFlash = objOle
    objFlash.Movie = "http://cardimg.163.com/mcards/1/big/3081.swf"
End Sub

    好了,回到上文中的:
Private Sub Command1_Click()
    Dim mIoleObject As IOleObject
    Set mIoleObject = ShockwaveFlash1
End Sub 

    运行程序,单击按钮,你看到了什么,13号错误,没错,就是这个。这个说明了什么,是flash不支持

IOLEOBJECT接口,还是我们利用set

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值