www.pudn.com > VB-KAOQINXITONG.zip > cSubclass.cls
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 0 'vbNone
MTSTransactionMode = 0 'NotAnMTSObject
END
Attribute VB_Name = "clsSubclass"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Option Explicit
#If DEBUGWINDOWPROC Then
Private m_DWPHook As WindowProcHook
#End If
Private m_WinProcOld As Long
Private m_hWnd As Long
Public Event EVTSetSetup(fsDoWhat As String)
Public Event MenuClick(wParam As Long)
Friend Function WindowProc(ByVal hWindow&, ByVal uMsg&, ByVal wParam&, ByVal lParam&) As Long
Select Case uMsg
Case WM_COMMAND
RaiseEvent MenuClick(wParam)
Case WM_DRAWITEM, WM_MEASUREITEM
If gTAppLicInfo.CtrlMenuBmp Then
gclsInclude.MyIconProc hWindow, uMsg, wParam, lParam
End If
Case 691022
If wParam = 163 Then RaiseEvent EVTSetSetup("USERNAME")
End Select
WindowProc = CallWindowProc(m_WinProcOld, hWindow, uMsg, wParam, lParam)
End Function
Public Sub SubClass(ByVal hwnd&)
If IsWindow(hwnd) Then
If GetProp(hwnd, "nvAdvSubcls") Then Exit Sub
If SetProp(hwnd, ByVal "nvAdvSubcls", ObjPtr(Me)) Then
#If DEBUGWINDOWPROC Then
Set m_DWPHook = CreateWindowProcHook
With m_DWPHook
.SetMainProc AddressOf MAdvancedSubclass.WindProc
m_WinProcOld = SetWindowLong(hwnd, GWL_WNDPROC, .ProcAddress)
.SetDebugProc m_WinProcOld
End With
#Else
m_WinProcOld = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf MAdvancedSubclass.WindProc)
#End If
m_hWnd = hwnd
End If
End If
End Sub
Private Sub UnSubClass()
If IsWindow(m_hWnd) Then
If m_WinProcOld Then
SetWindowLong m_hWnd, GWL_WNDPROC, m_WinProcOld
RemoveProp m_hWnd, "nvAdvSubcls"
m_WinProcOld = 0
m_hWnd = 0
End If
#If DEBUGWINDOWPROC Then
Set m_DWPHook = Nothing
#End If
End If
End Sub
Private Sub Class_Terminate()
UnSubClass
End Sub