哥们,你应当加强OOP思路的训练。GC不应当写到用户控件里作为其公共方法,因为USERCONTROL 是个对象,你在公共模块里调用GC,那么是哪个USERCONTROL对象的GC呢? 它的实例在哪里?所以GC应当是MODULE里的方法。那么它怎么获得你的 USERCONTROL对象呢?很简单,通过参数传递。USERCONTROL代码: Private Sub UserControl_Initialize() Set GlobalCtl = Me End SubMODULE代码:(定义部分省略) Global GlobalCtl as UserControl1Public Function WindowProc(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long If Msg = WM_VSCROLL Then call GC(GlobalCtl) End If WindowProc = CallWindowProc(lPrevWndProc, hWnd, Msg, wParam, ByVal lParam) End FunctionPublic Sub GC(Ctl as UserControl1) MsgBox "过程" '还要调用Text1的hWnd和pic的hWnd、hDC等属性 ctl.Texthwnd ...... End Sub当然,这里还有点麻烦的是,凡是你要用到的USERCONTROL的 对象,都必须把它给公布出来了。
To :yuweiqiang(小余) 应该载应用的控件前面加上container名字. 你用全局变量也可以,不过比较危险.最好还是改成属性.--------------------------------------------------------- Montaque==Digitalboy==Houyongfeng==Monkey
是个对象,你在公共模块里调用GC,那么是哪个USERCONTROL对象的GC呢?
它的实例在哪里?所以GC应当是MODULE里的方法。那么它怎么获得你的
USERCONTROL对象呢?很简单,通过参数传递。USERCONTROL代码:
Private Sub UserControl_Initialize()
Set GlobalCtl = Me
End SubMODULE代码:(定义部分省略)
Global GlobalCtl as UserControl1Public Function WindowProc(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_VSCROLL Then
call GC(GlobalCtl)
End If
WindowProc = CallWindowProc(lPrevWndProc, hWnd, Msg, wParam, ByVal lParam)
End FunctionPublic Sub GC(Ctl as UserControl1)
MsgBox "过程"
'还要调用Text1的hWnd和pic的hWnd、hDC等属性
ctl.Texthwnd ......
End Sub当然,这里还有点麻烦的是,凡是你要用到的USERCONTROL的
对象,都必须把它给公布出来了。
应该载应用的控件前面加上container名字.
你用全局变量也可以,不过比较危险.最好还是改成属性.---------------------------------------------------------
Montaque==Digitalboy==Houyongfeng==Monkey
不知道这位大哥能教我如何在ACTIVEDLL中处理类似的问题吗?
谢谢!!