上传一个子类化类模块,使用内嵌汇编技术实现了单类模块化(VB6.0)

CSDN上找到的,真的NB啊~~~~这下可以不再需要AddressOf与标准模块了.

工程的结构就可以更加理想了,爽~~~

下载地址:

下载文件 点击下载此文件

原帖地址:

http://topic.csdn.net/u/20081026/22/993327b2-7375-41b0-88fb-7cd8ca811934.html

12楼到19楼

*********把调用代码发上来,可见多么方便:*********

Option Explicit

'单类模块实现子类化消息拦截示例
'
'嗷嗷叫的老马 收藏与整理
'
'紫水晶工作室 http://www.m5home.com/

Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" ( _
ByRef Destination As Any, _
ByRef Source As Any, _
ByVal Length As Long)

Private Const WM_MOUSEMOVE As Long = &H200
Private Type myXY
mX As Integer
mY As Integer
End Type

Dim WithEvents oSubClass As cSubclass

Private Sub Form_Load()
Set oSubClass = New cSubclass '对象实例化
oSubClass.AddWindowMsgs Me.hWnd '挂上自己
End Sub

Private Sub Form_Unload(Cancel As Integer)
oSubClass.DeleteWindowMsg Me.hWnd '解除子类化
Set oSubClass = Nothing '销毁对象
End Sub

Private Sub oSubClass_MsgCome(ByVal bBefore As Boolean, bHandled As Boolean, lReturn As Long, lng_hWnd As Long, uMsg As Long, wParam As Long, lParam As Long)
'消息直接在这里处理即可
If bBefore Then '消息被默认窗体过程处理前
Select Case uMsg
Case WM_MOUSEMOVE
Dim mXY As myXY

Call CopyMemory(mXY, lParam, 4) '取出坐标.
Label1.Caption = mXY.mX & "/" & mXY.mY
End Select
End If
End Sub


直接AddWindowMsgs后就可以在事件里处理消息了,真的很方便

评论: 4 | 引用: 0 | 查看次数: 1864
???
???[2011-03-13 01:07 PM | ]
为什么要摆脱呢,只是多了个文件而已,但很可靠很科学嘛
回复来自 admin 的评论 admin 于 2011-03-14 10:05 AM 回复
当要进行多个对象的子类化的时候,就很烦了
admin
admin[2008-12-09 07:24 PM | ]
引用来自 pxxxxl 引用来自 pxxxxl
我有更爽的,看我的最强文。。。
不过貌似ide状态下运行不了...


弄来看看......我喜欢收集这些代码.
pxxxxl
pxxxxl[2008-12-09 10:35 AM | ]
我有更爽的,看我的最强文。。。
不过貌似ide状态下运行不了...
hongkvip
hongkvip[2008-12-08 06:47 PM | ]
初学者。。

马大哥能解释一下子类化和其用途么?