mToolBarHook.bas
上传用户:davilee3
上传日期:2015-04-22
资源大小:986k
文件大小:3k
源码类别:

浏览器

开发平台:

Visual Basic

  1. Attribute VB_Name = "mToolBarHook"
  2. Option Explicit
  3. Public lpPrevTbrProc As Long
  4. Public gHTbr As Long
  5. '#############################################
  6. 'Public Const TBN_FIRST As Long = (-700)
  7. 'Public Const TBN_DROPDOWN As Long = (TBN_FIRST - 10)
  8. '
  9. 'Public Const WM_NOTIFY As Long = &H4E
  10. 'Public Type NMHDR
  11. '    hwndFrom As Long
  12. '    idfrom As Long
  13. '    code As Long
  14. '
  15. 'End Type
  16. '
  17. '
  18. 'Private Type CTBBUTTON
  19. '    iBitmap As Long
  20. '    idCommand As Long
  21. '    fsState As Byte
  22. '    fsStyle As Byte
  23. '    dwData As Long
  24. '    iString As Long
  25. 'End Type
  26. ''======== Button Style =====================
  27. '
  28. 'Private Const BTNS_AUTOSIZE As Long = TBSTYLE_AUTOSIZE
  29. 'Private Const BTNS_BUTTON As Long = TBSTYLE_BUTTON
  30. 'Private Const BTNS_CHECK As Long = TBSTYLE_CHECK
  31. 'Private Const BTNS_CHECKGROUP As Long = TBSTYLE_CHECKGROUP
  32. 'Private Const BTNS_DROPDOWN As Long = TBSTYLE_DROPDOWN
  33. 'Private Const BTNS_GROUP As Long = TBSTYLE_GROUP
  34. 'Private Const BTNS_NOPREFIX As Long = TBSTYLE_NOPREFIX
  35. 'Private Const BTNS_SEP As Long = TBSTYLE_SEP
  36. 'Private Const BTNS_SHOWTEXT As Long = &H40
  37. 'Private Const BTNS_WHOLEDROPDOWN As Long = &H80
  38. '
  39. 'Private Const TB_SETBUTTONINFOA As Long = (WM_USER + 66)
  40. 'Private Const TB_SETBUTTONINFOW As Long = (WM_USER + 64)
  41. 'Private Const TB_GETBUTTONINFOA As Long = (WM_USER + 65)
  42. 'Private Const TB_GETBUTTONINFOW As Long = (WM_USER + 63)
  43. '################################################
  44.     
  45.  '以下过程为消息循环处理
  46. Private Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  47. Dim i As Integer
  48. Select Case uMsg
  49. '    Case WM_NOTIFY
  50. '        'Debug.Print "notify"
  51. '        Dim tnh As NMHDR
  52. '        CopyMemory tnh, ByVal lParam, Len(tnh)
  53. '        If tnh.code = TBN_DROPDOWN Then
  54. '            Debug.Print "dd"
  55. '            tnh.code = 0
  56. '            'CopyMemory ByVal lParam, tnh, Len(tnh)
  57. '            FavoriteFolderPopMenu.Popup hw
  58. '        End If
  59.         
  60.     Case WM_INITMENUPOPUP
  61. '        If MDIFrmMain.proxyPop Then
  62. '            For i = 0 To GetMenuItemCount(wParam) - 1
  63. '
  64. '                If i + 1 <> proxySelected Then
  65. '                    CheckMenuItem wParam, i, MF_BYPOSITION Or MF_UNCHECKED
  66. '                  Else
  67. '                    CheckMenuItem wParam, i, MF_BYPOSITION Or MF_CHECKED
  68. '                End If
  69. '            Next i
  70. '            MDIFrmMain.proxyPop = False
  71. '        End If
  72. '
  73. '        If MDIFrmMain.pvnpopPop And loadedBrowserCount > 0 Then
  74. '            For i = 0 To GetMenuItemCount(wParam) - 1
  75. '
  76. '                If i + 1 <> webbState(gActiveWebIndex).webForm.mPvnPop Then
  77. '                    CheckMenuItem wParam, i, MF_BYPOSITION Or MF_UNCHECKED
  78. '                  Else
  79. '                    CheckMenuItem wParam, i, MF_BYPOSITION Or MF_CHECKED
  80. '                End If
  81. '            Next i
  82. '            MDIFrmMain.pvnpopPop = False
  83. '        End If
  84. End Select
  85.         WindowProc = CallWindowProc(lpPrevTbrProc, hw, uMsg, wParam, lParam)
  86. End Function
  87.     
  88. Public Sub tbrHook() '将程序勾入消息环中
  89.  '利用AddressOf取得消息处理函数WindowProc的指针,并将其传给SetWindowLong
  90.  'lpPrevWndProc用来存储原窗口的指针
  91.  lpPrevTbrProc = SetWindowLong(gHTbr, GWL_WNDPROC, AddressOf WindowProc)
  92. End Sub
  93.     
  94. Public Sub tbrUnhook()
  95. '将程序从消息环退出。用原窗口的指针替换WindowProc函数的指针,即关闭子类、退出消息循环
  96.  Dim temp As Long
  97.  temp = SetWindowLong(gHTbr, GWL_WNDPROC, lpPrevTbrProc)
  98. End Sub