这个帖子是回答standys2004提出的问题的,估计有些朋友还不知道,就贴出来了:)
首先,COM对象如果要支持属性页特性,那么它必须实现ISpecifyPropertyPages接口,同样我们只要实现了ISpecifyPropertyPages接口,就可以显示属性页,在vb中实现ISpecifyPropertyPages接口需要我们了解ODL语言,编好ODL文件后,再编译为TLB文件,这里,我们需要庆幸的是,网上有很多相关的资源,可以找到现成的TLB文件,这里我用的是大家普遍使用的Edanmo's OLE interfaces & functions v1.81(使用这个的好处是可以省掉好多api的声明),它可以从:http://www.mvps.org/emorcillo/download/vb6/tl_ole.zip
下载,下载后,解压,找到olelib.tlb这个文件,它是我们需要的东东,然后,注册它并进行引用(可以用工具软件注册它,也可以从 工程-引用 对话框中 浏览 找到这个文件,然后双击)下面说说具体的实现,窗体上一个flash控件,名为ShockwaveFlash1,一个按钮,代码如下:
Option Explicit
'首先,你应该确定你已经引用了Edanmo's OLE interfaces & functions v1.81
Sub ShowProperties( _
ByVal Ctrl As Object, _
Optional ByVal CtrlName As String, _
Optional ByVal hWndParent As Long)
Dim oSPP As ISpecifyPropertyPages
Dim tPages As CAUUID On Error Resume Next
' 获得控件的 ISpecifyPropertyPages 接口
Set oSPP = Ctrl
If oSPP Is Nothing Then
' 如果失败,则尝试使用控件的Object属性进行获取
Set oSPP = Ctrl.Object
If oSPP Is Nothing Then
'下面是错误处理
On Error GoTo 0
Err.Raise 13
End If
End If
' 获得控件的所有属性页
oSPP.GetPages tPages
' 显示属性页
OleCreatePropertyFrame hWndParent, 0, 0, _
CtrlName, 1, Ctrl, tPages.cElems, _
ByVal tPages.pElems, 0, 0, 0
'释放资源
CoTaskMemFree tPages.pElems
End SubPrivate Sub Command1_Click()
ShowProperties ShockwaveFlash1
End Sub
首先,COM对象如果要支持属性页特性,那么它必须实现ISpecifyPropertyPages接口,同样我们只要实现了ISpecifyPropertyPages接口,就可以显示属性页,在vb中实现ISpecifyPropertyPages接口需要我们了解ODL语言,编好ODL文件后,再编译为TLB文件,这里,我们需要庆幸的是,网上有很多相关的资源,可以找到现成的TLB文件,这里我用的是大家普遍使用的Edanmo's OLE interfaces & functions v1.81(使用这个的好处是可以省掉好多api的声明),它可以从:http://www.mvps.org/emorcillo/download/vb6/tl_ole.zip
下载,下载后,解压,找到olelib.tlb这个文件,它是我们需要的东东,然后,注册它并进行引用(可以用工具软件注册它,也可以从 工程-引用 对话框中 浏览 找到这个文件,然后双击)下面说说具体的实现,窗体上一个flash控件,名为ShockwaveFlash1,一个按钮,代码如下:
Option Explicit
'首先,你应该确定你已经引用了Edanmo's OLE interfaces & functions v1.81
Sub ShowProperties( _
ByVal Ctrl As Object, _
Optional ByVal CtrlName As String, _
Optional ByVal hWndParent As Long)
Dim oSPP As ISpecifyPropertyPages
Dim tPages As CAUUID On Error Resume Next
' 获得控件的 ISpecifyPropertyPages 接口
Set oSPP = Ctrl
If oSPP Is Nothing Then
' 如果失败,则尝试使用控件的Object属性进行获取
Set oSPP = Ctrl.Object
If oSPP Is Nothing Then
'下面是错误处理
On Error GoTo 0
Err.Raise 13
End If
End If
' 获得控件的所有属性页
oSPP.GetPages tPages
' 显示属性页
OleCreatePropertyFrame hWndParent, 0, 0, _
CtrlName, 1, Ctrl, tPages.cElems, _
ByVal tPages.pElems, 0, 0, 0
'释放资源
CoTaskMemFree tPages.pElems
End SubPrivate Sub Command1_Click()
ShowProperties ShockwaveFlash1
End Sub
解决方案 »
- 谁知道控件编程中的AccessKeys属性怎么用?
- 问一下加密问题,有兴趣者请进!
- 急!!! 文本中的数据变换问题,怎么没人回答啊,在线等待高手们的回答!!!!!!多谢!!!!
- 太菜的问题啦!在一个窗口能不能定义两个枚举类型啊?还有……
- 颜色
- 一个简单的SQL语句问题求最大日期???
- 有谁知道如何把程序自身加到地址薄中邮件的附件中
- 请问vb中,怎么让一个对象等于零一个对象?
- 如何把图片写入到数据库里??不用邦定,用记录集或许其它方法
- 用VB如何处理多个用户同时操作一个DBF文件的错误?
- 如何用openfilename一次性选择大量的文件?
- VB写的程序运行时提示"运行时错误'429' ACTIVEX部件不能创建对象"
免费的学习交流网站,欢迎大家访问!
http://www.j2soft.cn/