首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

callwindowproc有关问题

2012-12-15 
callwindowproc问题Public Declare Function SetWindowLong Lib user32 Alias _SetWindowLongA (ByVal

callwindowproc问题
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 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 Const GWL_WNDPROC = (-4)
Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, _
 ByVal lParam As Long) As Long
    Dim sMsg As String
    On Error Resume Next
    sMsg = LoadResString(Msg)
    Debug.Print sMsg & "(=&H" & Hex(Msg) & "("
     WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
 End Function

Private Sub Form_Load()
  prewndproc = GetWindowLong(Me.hwnd, GWL_WNDPROC)
  SetWindowLong Me.hwnd, GWL_WNDPRCO, AddressOf WndProc
   
End Sub

Private Sub Form_Unload(Cancel As Integer)
   SetWindowLong Me.hwnd, GWL_WNDPROC, prevWndProc
End Sub
这是我在一个文档上抄的,但不全,我也不懂callwindowproc的用法,所以到请教各位大侠我该怎么补充能在运行后立即窗口会显示所发生的一些事件,如鼠标移动,键盘按下等事件???  谢谢了!

[最优解释]
Public Const GWL_WNDPROC = (-4)
SetWindowLong Me.hwnd, GWL_WNDPRCO, AddressOf WndProc
----------------
SetWindowLong Me.hwnd, GWL_WNDPROC, prevWndProc
----------------
 WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)

如果你在每个模块都加上Option Explicit就不会有这么多问题了.

变量声明还是很好的.

子类化在IDE还不能调试,想调试就去精华帖找看看
[其他解释]
该回复于2012-11-13 02:19:31被管理员删除
[其他解释]
唉,,这是什么年代??? 我想不通了,  这个问题难道都这么难吗 ?  
[其他解释]
  谢谢楼上的回答我已经知道了

热点排行