怎样自己控制窗体的消息循环,例如在其中“吃掉”发给某个控件的鼠标消息?

fansenwei 2003-11-03 10:41:01
如题
...全文
26 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
delphi_xizhousheng 2003-11-03
  • 打赏
  • 举报
回复
要是只是拦截特定的 消息的话
procedure yourmessageHandle (var msg:TMsg);message yourMessage;
begin
if msg.message=yourmessage then
abort
else
inherited;
end;
fansenwei 2003-11-03
  • 打赏
  • 举报
回复
覆盖wndproc方法应该也可以吧,可是怎么没有效果呢
saien 2003-11-03
  • 打赏
  • 举报
回复
//关于消息祥解.
http://expert.csdn.net/Expert/topic/2278/2278663.xml?temp=.2748834
flyinwuhan 2003-11-03
  • 打赏
  • 举报
回复
用TApplicationEvents控件。
例如:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if Msg.Handle = Button1.Handle then
begin
。。
Handled := TRUE;
end;
end;
Msg结构:
TMsg = packed record
hwnd: HWND;
message: UINT;
wParam: WPARAM;
lParam: LPARAM;
time: DWORD;
pt: TPoint;

end;
fansenwei 2003-11-03
  • 打赏
  • 举报
回复
这个方法不ok啊,呵呵
flyinwuhan 2003-11-03
  • 打赏
  • 举报
回复
可以这么拦截:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if Msg.message = WM_RBUTTONDOWN then
if PtInRect( Rect(realAudio.Left + Left,
realAudio.Top + Top,
realAudio.Width + realAudio.Left + Left,
realAudio.Height + realAudio.Top + Top),
Point(Mouse.CursorPos.X,Mouse.CursorPos.Y ) ) then
begin
Handled := TRUE;
end;
end;
fansenwei 2003-11-03
  • 打赏
  • 举报
回复
哎,我想拦截的是realAudio控件的右键单击消息,不让他弹出菜单,不知道怎么拦

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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