利用MsgHook控件来拦截处理Windows消息,比子类化要好调试一些。
新建一个标准EXE工程,添加部件 AxMsgHook.ocx,然后在窗口中添加一个MsgHook控件。MsgHook控件这里可以下载:https://download.csdn.net/download/Zezese/12510416
窗口代码如下:
'用户昵称: 留下些什么
'个人简介: 一个会做软件的货代
'CSDN网址:https://blog.csdn.net/zezese
'电子邮箱:31319180@qq.com
Option Explicit
Private Const WM_MOUSEWHEEL As Long = &H20A
Private Const WM_NCLBUTTONDOWN As Long = &HA1
Private Sub Form_Load()
MsgHook1.hWndTarget = Me.hWnd
'最多 32个消息, INDEX 为 0-31
MsgHook1.MsgList(0) = WM_MOUSEWHEEL
MsgHook1.MsgPassage(0) = MsgProcessingAfter
MsgHook1.MsgList(1) = WM_NCLBUTTONDOWN
MsgHook1.MsgPassage(1) = MsgProcessingBefore
End Sub
Private Sub MsgHook1_Message(ByVal MsgVal As Long, ByVal wParam As Long, ByVal lParam As Long, lplRetVal As Long)
Select Case MsgVal
Case WM_NCLBUTTONDOWN
Print "在标题栏按下左键"
Case WM_MOUSEWHEEL
Print "鼠标滚轮在窗体中滚动"
End Select
End Sub