社区
界面
帖子详情
WM_LBUTTONUP,WM_MBUTTONUP,WM_NCLBUTTONUP这几个消息有什么区别呀,都什么时候响应呀
princesshan
2004-11-11 03:52:56
WM_LBUTTONUP,WM_MBUTTONUP,WM_NCLBUTTONUP这几个消息有什么区别呀,都什么时候响应呀
我区别不开.
...全文
127
6
打赏
收藏
WM_LBUTTONUP,WM_MBUTTONUP,WM_NCLBUTTONUP这几个消息有什么区别呀,都什么时候响应呀
WM_LBUTTONUP,WM_MBUTTONUP,WM_NCLBUTTONUP这几个消息有什么区别呀,都什么时候响应呀 我区别不开.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
oyljerry
2004-11-11
打赏
举报
回复
都是鼠标弹后发出
区分,见楼上
linxy2002
2004-11-11
打赏
举报
回复
星星们就是强分快啊,呵呵
EPS
2004-11-11
打赏
举报
回复
同happyparrot(快乐鹦鹉),但这三个消息都是当鼠标键弹起后才发出的,和WM_LBUTTONDOWN等消息是对应的
hongzm
2004-11-11
打赏
举报
回复
是的,非客户区包括标题栏,菜单,及滚动条区域。
qrlvls
2004-11-11
打赏
举报
回复
这几个消息都是在释放鼠标按键的时候产生
NC = Non-client 非客户区
L = Left
M = Middle
快乐鹦鹉
2004-11-11
打赏
举报
回复
WM_LBUTTONUP -- 左键点击客户区
WM_MBUTTONUP --中键点击客户区
WM_NCLBUTTONUP--左键点击非客户区
鼠标Hook可视化的控件
Hook(钩子)并不是一项很难的技术,但对于初学者来说还是一个不小的门槛。为此,我将鼠标Hook做成了一个可视化的控件,通过简单的设置
几个
属性,就可以截获或跟踪其它应用程序的鼠标动作。**********控件介绍:【属性】1.Blocked: Boolean;确定是截获还是跟踪鼠标动作,True对应截获,False对应跟踪。默认值为False2.HookedExeName: string;指定被Hook的应用程序名称。为空时对所有的应用程序起作用。默认值为空3.Active: Boolean;是否处于Hook状态,只读。4.DllName: string;Mouse钩子的dll名称,默认为MouseHook.dll,只读。5.DLLLoaded: Boolean;MouseHook.dll是否被加载,只读。【方法】1.function Start: Boolean;开始Hook2.procedure Stop;停止Hook【事件】
WM
_L
BUTTON
DBLCLK,
WM
_L
BUTTON
DOWN,
WM
_L
BUTTON
UP,
WM
_R
BUTTON
DBLCLK,
WM
_R
BUTTON
DOWN,
WM
_R
BUTTON
UP,
WM
_M
BUTTON
DBLCLK,
WM
_M
BUTTON
DOWN,
WM
_M
BUTTON
UP,
WM
_
NCL
BUTTON
DBLCLK,
WM
_
NCL
BUTTON
DOWN,
WM
_
NCL
BUTTON
UP,
WM
_NCR
BUTTON
DBLCLK,
WM
_NCR
BUTTON
DOWN,
WM
_NCR
BUTTON
UP,
WM
_NCM
BUTTON
DBLCLK,
WM
_NCM
BUTTON
DOWN,
WM
_NCM
BUTTON
UP,
WM
_MOUSEMOVE,
WM
_MOUSEWHEEL,
WM
_NCMOUSEMOVE,
WM
_MOUSEACTIVATE,
WM
_NCHITTEST,
WM
_CAPTURECHANGED我处理了如上的鼠标事件,注意其中有
几个
事件我在测试时发现无法Hook,它们为
WM
_M
BUTTON
DBLCLK,
WM
_NCM
BUTTON
DBLCLK,
WM
_MOUSEACTIVATE,
WM
_NCHITTEST,
WM
_CAPTURECHANGED建议:不要将HookedExeName:=''; 和 Blocked:=True; 同时设置**********【使用说明】1.首先安装“鼠标Hook控件”目录下的控件2.必须将mousehook.dll拷贝到你开发的应用程序目录下,或系统目录下,如system32【多说几句】1.我提供了一个名为test.exe的demo,该例子是对notepad.exe进行Hook的,因此,使用前先启动notepad.exe,再点击界面上的“开始”,否则会提示“找不到指定的进程”!2.你可以参考我的控件设计模式来设计自己的Hook控件,如键盘Hook。3.本来想写一个组件包的,其中包括各种Hook控件,以及读写端口的控件,以方便初学者的使用,可是要些论文,以后再说吧。 黄晓斌 hxb_leiyuan2000@163.net QQ:478522325
Window
消息
大全
消息
,就是指Windows发出的一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键都会使Windows发送一个
消息
给应用程序。
消息
本身是作为一个记录传递给应用程序的,这个记录中包含了
消息
的类型以及其他信息。例如,对于单击鼠标所产生的
消息
来说,这个记录中包含了单击鼠标时的坐标。这个记录类型叫做TMsg,它在Windows单元中是这样声明的: type TMsg = packed record hwnd: HWND; //窗口句柄 message: UINT;//
消息
常量标识符 wParam: WPARAM ;// 32位
消息
的特定附加信息 lParam: LPARAM ;// 32位
消息
的特定附加信息 time: DWORD;//
消息
创建时的时间 pt: TPoint; //
消息
创建时的鼠标位置 end ;
消息
中有什么? 是否觉得一个
消息
记录中的信息像希腊语一样?如果是这样,那么看一看下面的解释:hwnd 32位的窗口句柄。窗口可以是任何类型的屏幕对象,因为Win32能够维护大多数可 视对象的句柄(窗口、对话框、按钮、编辑框等)。message 用于
区别
其他
消息
的常量值,这些常量可以是Windows单元中预定义的常量,也 可以是自定义的常量。 wParam 通常是一个与
消息
有关的常量值,也可能是窗口或控件的句柄。 lParam 通常是一个指向内存中数据的指针。由于WParam、lParam和Pointer都是32位的,因此,它们之间可以相互转换。
WM
_NULL =$0000 //
WM
_CREATE =$0001 //应用程序创建一个窗口
WM
_DESTROY = $0002 //一个窗口被销毁
WM
_MOVE = $0003 //移动一个窗口
WM
_SIZE= $0005 //改变一个窗口的大小
WM
_ACTIVATE= $0006 //一个窗口被激活或失去激活状态;
WM
_SETFOCUS= $0007 //获得焦点后
WM
_KILLFOCUS= $0008 //失去焦点
WM
_ENABLE= $000A //改变enable状态
WM
_SETREDRAW= $000B //设置窗口是否能重画
WM
_SETTEXT= $000C //应用程序发送此
消息
来设置一个窗口的文本
WM
_GETTEXT = $000D //应用程序发送此
消息
来复制对应窗口的文本到缓冲区
WM
_GETTEXTLENGTH = $000E //得到与一个窗口有关的文本的长度(不包含空字符)
WM
_PAINT = $000F //要求一个窗口重画自己
WM
_CLOSE = $0010 //当一个窗口或应用程序要关闭时发送一个信号
WM
_QUERYENDSESSION= $0011 //当用户选择结束对话框或程序自己调用ExitWindows函数
WM
_QUIT= $0012 //用来结束程序运行或当程序调用postquitmessage函数
WM
_QUERYOPEN = $0013 //当用户窗口恢复以前的大小位置时,把此
消息
发送给某个图标
WM
_ERASEBKGND = $0014 //当窗口背景必须被擦除时(例在窗口改变大小时)
WM
_SYSCOLORCHANGE = $0015 //当系统颜色改变时,发送此
消息
给所有顶级窗口
WM
_ENDSESSION = $0016 // 当系统进程发出
WM
_QUERYENDSESSION
消息
后,此
消息
发送给应用程序,通知它对话是否结束
WM
_SYSTEMERROR = $0017 //
WM
_SHOWWINDOW= $0018 //当隐藏或显示窗口是发送此
消息
给这个窗口
WM
_ACTIVATEAPP = $001C //发此
消息
给应用程序哪个窗口是激活的,哪个是非激活的;
WM
_FONTCHANGE= $001D //当系统的字体资源库变化时发送此
消息
给所有顶级窗口
WM
_TIMECHANGE= $001E //当系统的时间变化时发送此
消息
给所有顶级窗口
WM
_CANCELMODE= $001F //发送此
消息
来取消某种正在进行的摸态(操作)
WM
_SETCURSOR = $0020 //如果鼠标引起光标在某个窗口中移动且鼠标输入没有被捕获时,就发
消息
给某个窗口
WM
_MOUSEACTIVATE = $0021 //当光标在某个非激活的窗口中而用户正按着鼠标的某个键发送此
消息
给当前窗口
WM
_CHILDACTIVATE = $0022 //发送此
消息
给MDI子窗口当用户点击此窗口的标题栏,或当窗口被激活,移动,改变大小
WM
_QUEUESYNC= $0023 //此
消息
由基
VB写的摄像头家庭监
VB写的摄像头家庭监控 Public Function msgproc(ByVal hwnd As Long, ByVal msg As Long, ByVal wp As Long, ByVal lp As Long) As Long On Error Resume Next Dim a As along, t As toint a.x = lp: LSet t = a Select Case msg Case msghinstance.
WM
_MOUSEMOVE, msghinstance.
WM
_L
BUTTON
DOWN, msghinstance.
WM
_L
BUTTON
UP, msghinstance.
WM
_L
BUTTON
DBLCLK, _ msghinstance.
WM
_R
BUTTON
DOWN, msghinstance.
WM
_R
BUTTON
UP, msghinstance.
WM
_R
BUTTON
DBLCLK, _ msghinstance.
WM
_M
BUTTON
DOWN, msghinstance.
WM
_M
BUTTON
UP, msghinstance.
WM
_M
BUTTON
DBLCLK, _ msghinstance.
WM
_NCMOUSEMOVE, msghinstance.
WM
_
NCL
BUTTON
DOWN, msghinstance.
WM
_
NCL
BUTTON
UP, msghinstance.
WM
_
NCL
BUTTON
DBLCLK, _ msghinstance.
WM
_NCR
BUTTON
DOWN, msghinstance.
WM
_NCR
BUTTON
UP, msghinstance.
WM
_NCR
BUTTON
DBLCLK, _ msghinstance.
WM
_NCM
BUTTON
DOWN, msghinstance.
WM
_NCM
BUTTON
UP, msghinstance.
WM
_NCM
BUTTON
DBLCLK, _ msghinstance.
WM
_HOTKEY msgproc = msghinstance.gotomsgevent(hwnd, msg, wp, t.x, t.y) Case msghinstance.
WM
_MOVE, msghinstance.
WM
_SIZE msgproc = msghinstance.gotomsgevent(hwnd, msg, t.x, t.y) Case msghinstance.
WM
_KEYDOWN, msghinstance.
WM
_KEYUP, msghinstance.
WM
_SYSCOMMAND, msghinstance.
WM
_COMMAND, _ msghinstance.
WM
_ACTIVATEAPP, msghinstance.
WM
_NCACTIVATE, msghinstance.
WM
_QUERYOPEN msgproc = msghinstance.gotomsgevent(hwnd, msg, wp) Case msghinstance.
WM
_DRAWCLIPBOARD, msghinstance.
WM
_QUERYENDSESSION msgproc = msghinstance.gotomsgevent(hwnd, msg) Case msghinstance.
WM
_GETMINMAXINFO Dim MinMax As MINMAXINFO CopyMemory MinMax, ByVal lp, Len(MinMax) msghinstance.MaxSizeX = MinMax.ptMaxSize.x msghinstance.MaxSizeY = MinMax.ptMaxSize.y msghinstance.MaxPositionX = MinMax.ptMaxPosition.x msghinstance.MaxPositionY = MinMax.ptMaxPosition.y msghinstance.MinTrackSizeX = MinMax.ptMinTrackSize.x msghinstance.MinTrackSizeY = MinMax.ptMinTrackSize.y msghinstance.MaxTrackSizeX = MinMax.ptMaxTrackSize.x msghinstance.MaxTrackSizeY = MinMax.ptMaxTrackSize.y msghinstance.gotomsgevent hwnd, msg MinMax.ptMaxSize.x = msghinstance.MaxSizeX MinMax.ptMaxSize.y = msghinstance.MaxSizeY MinMax.ptMaxPosition.x = msghinstance.MaxPositionX MinMax.ptMaxPosition.y = msghinstance.MaxPositionY MinMax.ptMinTrackSize.x = msghinstance.MinTrackSizeX MinMax.ptMinTrackSize.y = msghinstance.MinTrackSizeY MinMax.ptMaxTrackSize.x = msghinstance.MaxTrackSizeX MinMax.ptMaxTrackSize.y = msghinstance.MaxTrackSizeY
MFC Windows程序设计学习笔记--鼠标和键盘
设备驱动程序处理鼠标和键盘中断,将结果事件放在一系统范围队列中。1. 客户区鼠标
消息
:
WM
_L
BUTTON
DOWN
WM
_L
BUTTON
UP
WM
_L
BUTTON
DBLCLK
WM
_M
BUTTON
DOWN
WM
_M
BUTTON
UP
WM
_M
BUTTON
DBLCLK
WM
_R
BUTTON
DOWN
WM
_R
BUTTON
UP
WM
_R
BUTTON
DBLCLK
WM
_MOUSEMOV
如何理解
WM
_SIZE
如何理解
WM
_SIZE
界面
15,979
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章