读书人

低级有关问题:控件工程模块中访问控件

发布时间: 2012-01-28 22:06:13 作者: rapoo

低级问题:控件工程模块中访问控件的问题
我新建了一个名为LRCShow自定义控件的工程,并添加了一个标准模块。我想在模块的过程中引用控件该怎么写?我用LRCShow或者Usercontrol都不行。

如果我想在过程参数中引用控件该怎么写?例如如果引用一个picturebox可以写为Pic as picturebox。但是引用控件该怎么写呢?LRC as control?LRC as form?我把参数写为LRC as control但是好像不行,向这个参数传入Usercontrol提示“使用基类名无效”,传入LRCShow提示Byref参数类型不符,传入Me提示“实时错误13:类型不匹配”。

请教各位大侠了

[解决办法]
不能引用自身,编译后被其它程序引用
[解决办法]

VB code
Sub X (LRC As Object)    ...End Sub
[解决办法]
用类地址,因为控件都有窗口句柄,而在模块中的消息处理过程都会传递窗口句柄,
所以可以通过窗口句柄存储类地址来传递你控件类的实例句柄。然后在模块函数中
通过复原类的方法就可以引用到你的控件对象了,当然也可以进行出发控件的方法
或进行属性读写操作
[解决办法]
道理一样的,看看下面的代码
VB code
...   Dim ClassAddress As Long   Dim LRC As Control   '这里可以用你的控件对象    GetWindowLong hwnd, GWL_USERDATA, ClassAddress   If ClassAddress=0 Then      MainWndProc = CallWindowProc(PrevWndProc, _                                   hwnd, _                                   Message, _                                   wParam, _                                   lParam)      Exit Function   End If   CopyMemory LRC, ClassAddress, 4   Select Case Message...            Msgbox "Height:" & LRC.Height,64,"提示"            CopyMemory LRC, 0&, 4    '用完后释放对象... 

读书人网 >VB

热点推荐