怎么判断鼠标键是否按下?(50分)

  • 主题发起人 主题发起人 ypy
  • 开始时间 开始时间
MouseDown事件中!
if button= mbLeft then
 
if (GetAsyncKeyState(VK_LBUTTON) and $8000)<>0 then showmessage('左键按下');
 
用api来检测,像GetAsyncKeyState用来检测键盘状态一样
 
为什么要mask一个 $8000 ?
 
在Windows系统中,任何一个事件都是由消息来驱动的。所以你可以用Windows消息来判断。
方法:
第一步,在private中声明一个消息
procedure appclick(var msg:tmsg;var handled:boolean);

然后处理消息过程:
procedure tinstock_detailform.click(var msg:tmsg;var handled:boolean);
begin
if msg.message =513 then showmessage('鼠标左键入按下')
if msg.message =516 then showmessage('鼠标右键入按下')
if msg.message =512 then showmessage('鼠标移动')
//......
end;
最后,在窗体加载事件中指定消息处理:
procedure Tinstock_detailForm.FormCreate(Sender: TObject);
begin
application.OnMessage:=click;
end;
 
接受答案了.
 
后退
顶部