如何捕获鼠标消息

lim_5258 2009-08-27 04:34:36
如题 包括鼠标左、右键单击,鼠标移动
...全文
310 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
byteh 2009-09-04
  • 打赏
  • 举报
回复
非全局的话,不用使用钩子,7楼的就可以搞定
贝隆 2009-09-04
  • 打赏
  • 举报
回复
最好用钩子函数。
贝隆 2009-09-03
  • 打赏
  • 举报
回复
钩子函数
willflyz 2009-09-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lim_5258 的回复:]
引用 2 楼 winstonbonaparte 的回复:
mousedown,mounsemove,mouseup這些事件

是的 我要的是用 procedure  ....;message wm_mousemove
这种方式
[/Quote]
可以参考下面的代码
{ Private declarations }
procedure MyWMMouseMove(var Message: TWMMouseMove); message WM_MOUSEMOVE;

procedure TForm1.MyWMMouseMove(var Message: TWMMouseMove);
begin
inherited;
Edit1.Text := IntToStr(Message.XPos);
Edit2.Text := IntToStr(Message.YPos);
end;
其实这些消息在VCL里面已经封装好了,在Controls单元中的TControl类当中

procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
procedure WMNCLButtonDown(var Message: TWMNCLButtonDown); message WM_NCLBUTTONDOWN;
procedure WMRButtonDown(var Message: TWMRButtonDown); message WM_RBUTTONDOWN;
procedure WMMButtonDown(var Message: TWMMButtonDown); message WM_MBUTTONDOWN;
procedure WMLButtonDblClk(var Message: TWMLButtonDblClk); message WM_LBUTTONDBLCLK;
procedure WMRButtonDblClk(var Message: TWMRButtonDblClk); message WM_RBUTTONDBLCLK;
procedure WMMButtonDblClk(var Message: TWMMButtonDblClk); message WM_MBUTTONDBLCLK;
procedure WMMouseMove(var Message: TWMMouseMove); message WM_MOUSEMOVE;
procedure WMLButtonUp(var Message: TWMLButtonUp); message WM_LBUTTONUP;
procedure WMRButtonUp(var Message: TWMRButtonUp); message WM_RBUTTONUP;
procedure WMMButtonUp(var Message: TWMMButtonUp); message WM_MBUTTONUP;
procedure WMMouseWheel(var Message: TWMMouseWheel); message WM_MOUSEWHEEL;



sanguomi 2009-09-03
  • 打赏
  • 举报
回复
一个钩子,5分钟的事情
mdejtod 2009-09-03
  • 打赏
  • 举报
回复
拦截系统消息

procedure MyMessage(var Msg: TMsg; var Handled: Boolean)

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage := MyMessage;
end;

procedure TForm1.MyMessage(var Msg: TMsg; var Handled: Boolean);
var FRect :TRect;
begin
case Msg.message of
WM_LBUTTONDBLCLK : //这个是双击。后面还有很多,你自己看看哪些有用
begin

end;
end;
end;
wh_wangjun 2009-08-27
  • 打赏
  • 举报
回复
定义消息处理函数,响应wm_lbuttondown wm_rbuttondown 之类的消息
gyk120 2009-08-27
  • 打赏
  • 举报
回复
可以下电子书看嘛,盒子上有下载的
lim_5258 2009-08-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bdmh 的回复:]
系统钩子,见 <Delphi下深入Windows核心编程>
[/Quote]
我要有书看 还用来问啊
lim_5258 2009-08-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 winstonbonaparte 的回复:]
mousedown,mounsemove,mouseup這些事件
[/Quote]
是的 我要的是用 procedure ....;message wm_mousemove
这种方式
winstonbonaparte 2009-08-27
  • 打赏
  • 举报
回复
mousedown,mounsemove,mouseup這些事件
bdmh 2009-08-27
  • 打赏
  • 举报
回复
系统钩子,见<Delphi下深入Windows核心编程>

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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