我们使用上面列出的微软补丁升级了我们的计算机,现在遇到了一些winsock控件的问题。在继续使用新组件库时,我们遇到了两个问题:
通过在添加控件之前添加一行License.Add(控件的PrgID)来解决此问题。
现在的问题是,当我们尝试将此控件设置为mWinsock类型的对象时,我们会遇到运行时错误类型不匹配。有什么想法吗?
答案 0 :(得分:2)
查看“Visual Basic 6.0 Service Pack 6运行时扩展文件的累积更新汇总说明。”
http://support.microsoft.com/kb/957924/
2008年12月30日更新应删除并替换错误的Dec 9安全更新。它似乎涉及926857和957924。
958369似乎是针对相同错误更新(12月9日)的Visual FoxPro知识库文章。 VFP使用许多VB控件。
答案 1 :(得分:1)
您可能需要将控件添加到工具箱中,以便VB6项目和表单具有适当的引用。即使您在设计时没有在表单上使用它,也需要这样做。
使用引用VB可能没有在运行时解析控件的方法和属性所需的所有信息
答案 2 :(得分:0)
由于界面签名已更改,您必须从项目中删除组件引用,完全保存并关闭VB6,取消注册旧控件,从修补程序注册新版本,重新打开项目并重新添加组件如果你这样做,你很可能会失去对没有安装补丁的机器的支持(或者你必须将它作为安装包的一部分安装)
当然,你可以随时声明引用“As Object”,如果它更容易,但你的性能会下降一点,你将失去对WithEvents的支持
答案 3 :(得分:0)
在VB6中动态创建非内部控件时遇到了类似的问题。也许Winsock不再被认为是内在的。尝试将您的变量声明为VBControlExtender而不是Winsock,如下所示:
Option Explicit
Dim WithEvents objExt As VBControlExtender
Private Sub LoadControl()
Licenses.Add "MSWinsockLib.Winsock", "xydsfasfjewfe"
Set objExt = Controls.Add("MSWinsockLib.Winsock", "myCtl")
End Sub
Private Sub extObj_ObjectEvent(Info As EventInfo)
' Program the events of the control using Select Case.
Select Case Info.Name
Case "DataArrival"
' Do stuff
End Select
End Sub
有关详细信息,请参阅this MSDN article。