+ -
当前位置:首页 → 问答吧 → 关于Activex Exe传递对象变量的问题

关于Activex Exe传递对象变量的问题

时间:2011-08-17

来源:互联网

先上代码:
Activex Exe工程名:TestClass
类模块:Class1
代码:
Option Explicit

Private m_StdTestPic As StdPicture

Public Property Get TestPic() As StdPicture
  Set TestPic = m_StdTestPic
End Property

Public Property Set TestPic(ByVal StdValue As StdPicture)
  Set m_StdTestPic = StdValue
End Property

标准Exe代码:
Option Explicit
Dim a As New Class1

Private Sub cmdCommand1_Click()
  Set a.TestPic = Me.Icon
End Sub

问题:
当TestClass编译为ActiveX Exe时标准Exe执行
Set a.TestPic = Me.Icon出错
当TestClass编译为ActiveX Dll时标准Exe执行
正常执行
请高手指条明路,不单是StdPicture不能传递,像ImageList控件对象等都不能用
String等类型都能正常操作

作者: ftz820127   发布时间: 2011-08-17

Activex Exe在底层处理可能不太一样吧

String等类型(包含数组、记录集等还有很多),在底层数据结构中是包含长度等信息的。(参见 VB圣经)
这种情况是在set 时,处于不同线程的深拷贝,所以⋯⋯
在同一线程应该不会出现这种情况的吧?
你可以建一个类模块试试

以上纯属猜测。

作者: ybh37   发布时间: 2011-08-17

Windows下的一些说法是:基于线程保护,一个线程不可直接访问另一个线程的对象。只能通过线程间的3种通信方式来间接访问。
我不知道有没有这个说法,也不知道是不是这样的。
共同研究⋯⋯

作者: ybh37   发布时间: 2011-08-17

热门下载

更多