Private Sub MSFlexGrid1_SelChange() Me.Caption = MSFlexGrid1.Row & "," & MSFlexGrid1.Col End Sub
to mmcgzs: 你的例子好像不能判断我按下的是那个健啊???而且我试了好像不行啊,还有我的四个健都有不同的时间相对应啊,我主要是要捕捉这四个健的press事件啊,高手们再帮我想想啊谢谢
控件自代的过程好象不能获取到这四个键的press事件看来只能使用子类了看一些关于子类的东西吧
'模块: Option Explicit Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) 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 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 oldproc As Long Public Const WM_KEYDOWN = &H100Public Function RegisterWindow(hwnd As Long) As Long If hwnd <> 0 Then oldproc = SetWindowLong(hwnd, -4, AddressOf WinProc) End If End Function Public Function unRegisterWindow(hwnd As Long) As Long
If hwnd <> 0 Then SetWindowLong hwnd, -4, oldproc End IfEnd Function Public Function WinProc(ByVal hwnd As Long, ByVal msg As Long, ByVal lpara As Long, ByVal wpara As Long) As Long If msg = WM_KEYDOWN Then Select Case lpara Case vbKeyUp MsgBox "向上" Case vbKeyDown MsgBox "向下" Case vbKeyLeft MsgBox "向左" Case vbKeyRight MsgBox "向右" End Select End IfWinProc = CallWindowProc(oldproc, hwnd, msg, lpara, wpara) End Function '窗体 Private Sub Form_Load() RegisterWindow MSFlexGrid1.hwnd End SubPrivate Sub Form_Unload(Cancel As Integer) unRegisterWindow MSFlexGrid1.hwnd End Sub
Me.Caption = MSFlexGrid1.Row & "," & MSFlexGrid1.Col
End Sub
你的例子好像不能判断我按下的是那个健啊???而且我试了好像不行啊,还有我的四个健都有不同的时间相对应啊,我主要是要捕捉这四个健的press事件啊,高手们再帮我想想啊谢谢
Option Explicit
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) 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 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 oldproc As Long
Public Const WM_KEYDOWN = &H100Public Function RegisterWindow(hwnd As Long) As Long
If hwnd <> 0 Then
oldproc = SetWindowLong(hwnd, -4, AddressOf WinProc)
End If
End Function
Public Function unRegisterWindow(hwnd As Long) As Long
If hwnd <> 0 Then
SetWindowLong hwnd, -4, oldproc
End IfEnd Function
Public Function WinProc(ByVal hwnd As Long, ByVal msg As Long, ByVal lpara As Long, ByVal wpara As Long) As Long
If msg = WM_KEYDOWN Then
Select Case lpara
Case vbKeyUp
MsgBox "向上"
Case vbKeyDown
MsgBox "向下"
Case vbKeyLeft
MsgBox "向左"
Case vbKeyRight
MsgBox "向右"
End Select
End IfWinProc = CallWindowProc(oldproc, hwnd, msg, lpara, wpara)
End Function
'窗体
Private Sub Form_Load()
RegisterWindow MSFlexGrid1.hwnd
End SubPrivate Sub Form_Unload(Cancel As Integer)
unRegisterWindow MSFlexGrid1.hwnd
End Sub