请问能自定义事件处理函数的名称吗?

BeyondSandro 2008-02-17 07:12:07
比如将MSComm1_OnComm()定义成MSComm1_MyOnComm()?
谢谢!
...全文
59 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
BeyondSandro 2008-02-19
  • 打赏
  • 举报
回复
看起来还不是那么容易啊,不过也是解决方法。
结帖了,谢谢大家!
smalle 2008-02-17
  • 打赏
  • 举报
回复
标准模块下 还要添加这个常数

Public Const GWL_WNDPROC = (-4)
smalle 2008-02-17
  • 打赏
  • 举报
回复
sub MSComm1_OnComm()
MSComm1_MyOnComm
end sub

在其函数中调用你自己写的函数即可。

---------------------

或者使用HOOK

Form1下


Public m_lpVBWndProc As Long
Private Sub Form1_Load()
'Hook
SetHook Me, AddressOf Form1_MyWindowProc
End Sub



标准模块下

'Hook
Public Const WM_MOUSEWHEEL = &H20A

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 Function SetHook(frmHookForm As Form, lpWinProc As Long) As Long
If lpWinProc = 0 Then Exit Function
frmHookForm.m_lpVBWndProc = SetWindowLong(frmHookForm.hwnd, GWL_WNDPROC, lpWinProc)
End Function

Function Form1_MyWindowProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

'消息处理
Select Case uMsg
Case WM_MOUSEWHEEL
msgbox ""
End Select

'让VB默认的处理函数处理
mdiViewForm_MyWindowProc = CallWindowProc(m_lpVBWndProc, hw, uMsg, wParam, lParam)

End Function

xlt_200808 2008-02-17
  • 打赏
  • 举报
回复
这是可以的,但MSComm1_MyOnComm()事件不属于MSComm1私有.MSComm1_MyOnComm()将只是一个自定义函数或事件MSComm1要调用才能有到该事件或函数
zzyong00 2008-02-17
  • 打赏
  • 举报
回复
建个类
public event MyOnComm
sub MSComm1_OnComm()
raiseevent MyOnComm
end sub

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧