'code in module Public Declare Function RegisterWindowMessage Lib "user32" Alias "RegisterWindowMessageA" (ByVal lpString As String) As Long Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long Public Declare Function PostMessage Lib "user32" _ Alias "PostMessageA" _ (ByVal hwnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ lParam As Any) As Long
Public Const GWL_WNDPROC = (-4) Public WindowMsg As Long Public lPrevWndProc As Long Public Const SW_SHOWNORMAL = 1 Public Function NewWindowProc(ByVal hwnd As Long, ByVal Msg As Long, _ ByVal wParam As Long, ByVal lParam As Long) As Long Select Case Msg Case WindowMsg '处理 Debug.Print "y" Form1.TreeView1.Height = 500 Case Else NewWindowProc = CallWindowProc(lPrevWndProc, hwnd, Msg, wParam, lParam) End Select End Function=============================== 'code in form Private Sub Command1_Click() PostMessage TreeView1.hwnd, WindowMsg, ByVal 0&, ByVal 0& End SubPrivate Sub Form_Load() WindowMsg = RegisterWindowMessage("abcd") lPrevWndProc = SetWindowLong(TreeView1.hwnd, GWL_WNDPROC, AddressOf NewWindowProc) End SubPrivate Sub Form_Unload(Cancel As Integer) SetWindowLong TreeView1.hwnd, GWL_WNDPROC, lPrevWndProc End Sub
Public Declare Function RegisterWindowMessage Lib "user32" Alias "RegisterWindowMessageA" (ByVal lpString As String) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Public Declare Function PostMessage Lib "user32" _
Alias "PostMessageA" _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long
Public Const GWL_WNDPROC = (-4)
Public WindowMsg As Long
Public lPrevWndProc As Long
Public Const SW_SHOWNORMAL = 1
Public Function NewWindowProc(ByVal hwnd As Long, ByVal Msg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
Select Case Msg
Case WindowMsg
'处理
Debug.Print "y"
Form1.TreeView1.Height = 500
Case Else
NewWindowProc = CallWindowProc(lPrevWndProc, hwnd, Msg, wParam, lParam)
End Select
End Function===============================
'code in form
Private Sub Command1_Click()
PostMessage TreeView1.hwnd, WindowMsg, ByVal 0&, ByVal 0&
End SubPrivate Sub Form_Load()
WindowMsg = RegisterWindowMessage("abcd")
lPrevWndProc = SetWindowLong(TreeView1.hwnd, GWL_WNDPROC, AddressOf NewWindowProc)
End SubPrivate Sub Form_Unload(Cancel As Integer)
SetWindowLong TreeView1.hwnd, GWL_WNDPROC, lPrevWndProc
End Sub