如何截获消息(100分)

  • 主题发起人 主题发起人 千层血
  • 开始时间 开始时间

千层血

Unregistered / Unconfirmed
GUEST, unregistred user!
比如;截获某个Button的onClick消息,让他不执行onClick的代码,而执行另一段代码<br>麻烦各位尽量说详细一点,小弟比较弱的
 
如果只是实现你上面说的这个问题则不用这么复杂的!<br>你在OnClick事件中调用定义的过程不就可以了吗?
 
是你自己的还是别人的??
 
上面只是想的一个例子,我是想知道截获消息的实质
 
千层血?好恐怖!<br>还是我的千堆雪好!<br><br>建议你看看Windows的消息处理机制<br><br>private<br>&nbsp; &nbsp; { Private declarations }<br>&nbsp; &nbsp; Procedure WinMsg (Var Msg : TMsg; Var Handled : Boolean);<br><br>Procedure TForm1.WinMsg (Var Msg : TMsg; Var Handled : Boolean);<br><br>Begin<br>&nbsp; &nbsp; &nbsp;If Msg.Message = WM_LBUTTONDOWN then <br>&nbsp; &nbsp; &nbsp; &nbsp;ShowMessage('asdf'); &nbsp; //这里是你截获到鼠标左键在客户区按下消息后的处理<br>End;<br><br>procedure TForm1.FormCreate(Sender: TObject);<br>begin<br>&nbsp; Application.OnMessage := WinMsg;<br>end;
 
那每秒钟系统都要发N个消息,每个都这样判断一下会不会影响运行的速度呀
 
当然严重影响啦。
 
!还是“严重影响”那这位兄台能否指点小弟该怎么解决呢?--抓消息,不影响速度<br><br>雪老大怎么就只露一面就闪掉了~继续讲古嘛
 
你到底要实现什么功能?
 
在学习嘛~<br>TO:雪:<br>&nbsp; &nbsp;如果窗体上有一堆Brtton那怎么知道是哪个Button被按下了呢
 
每个Button 有Tag 属性<br>&nbsp;case (Sender As Tbutton).Tag of<br>&nbsp; &nbsp; 1: ShowMessage('Button1.Clicked');<br>&nbsp; &nbsp; 2: ..<br>&nbsp; &nbsp; &nbsp; &nbsp;..<br>&nbsp;end;
 
Delphi将TMsg.hwnd 封装了目的在于要用组件进行功能自定义:)<br>有点麻烦:(<br>不过可以用GetMessage API试一试
 
多定义组件, 少捕捉消息才是上策:)
 
多人接受答案了。
 
后退
顶部