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

浏览器

开发平台:

Visual Basic

  1. Attribute VB_Name = "mReBarHook"
  2. Option Explicit
  3. Public lpPrevRbProc As Long
  4. Private Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  5. Select Case uMsg
  6.     Case WM_RBUTTONUP
  7.         gMainForm.popMenuLockToolBar
  8.     Case WM_SIZE
  9. '        Dim tRt As RECT
  10. '        GetWindowRect hw, tRt
  11. '        gMainForm.pctReBar.Height = (tRt.Bottom - tRt.Top) * 15
  12.         'gMainForm.pctReBar.Height = gMainForm.myRebar.GetHeight * 15
  13.         
  14.         Dim tw As Long
  15.         tw = (lParam And &HFFFF0000) / &H10000
  16.         If tw >= 0 Then
  17.             gMainForm.pctReBar.Height = (tw + 4) * 15
  18.             If tw = 0 Then
  19.                 gMainForm.pctReBar.Visible = False
  20.             Else
  21.                 If Not gFullScreenMode Then
  22.                     gMainForm.pctReBar.Visible = True
  23.                 End If
  24.             End If
  25.         End If
  26.         
  27.         'WindowProc = CallWindowProc(lpPrevRbProc, hw, uMsg, wParam, lParam)
  28.     Case Else '调用缺省窗口指针
  29.         'WindowProc = CallWindowProc(lpPrevRbProc, hw, uMsg, wParam, lParam)
  30. End Select
  31. WindowProc = CallWindowProc(lpPrevRbProc, hw, uMsg, wParam, lParam)
  32. End Function
  33.     
  34. Public Sub rbhook(ByVal hw As Long)   '将程序勾入消息环中
  35.  '利用AddressOf取得消息处理函数WindowProc的指针,并将其传给SetWindowLong
  36.  'lpPrevWndProc用来存储原窗口的指针
  37.  lpPrevRbProc = SetWindowLong(hw, GWL_WNDPROC, AddressOf WindowProc)
  38. End Sub
  39.     
  40. Public Sub rbUnhook(ByVal hw As Long)
  41. '将程序从消息环退出。用原窗口的指针替换WindowProc函数的指针,即关闭子类、退出消息循环
  42. Call SetWindowLong(hw, GWL_WNDPROC, lpPrevRbProc)
  43. End Sub