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