★★WM_WINDOWPOSCHANGING这个消息如何截获?
★★WM_WINDOWPOSCHANGING这个消息如何截获?
在窗体上放一个ApplicationEvents1控件,在其OnMessage事件中加上:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if msg.message = WM_WINDOWPOSCHANGING then
begin
messagebeep(mb_ok);
end;
end;
在窗体上放一个Button1,在起OnClick事件中加上:
procedure TForm1.Button1Click(Sender: TObject);
begin
sendmessage(form1.Handle,WM_WINDOWPOSCHANGING,$00000000,$0012F6D0);
end;
我特意的在一个按钮的事件中发送WM_WINDOWPOSCHANGING这个消息,居然不能截获!!ApplicationEvents的OnMessage事件不是能截获所有的消息吗?为什么这个消息不能截获?请各位高手指导,谢谢!
问题点数:28、回复次数:12Top
1 楼lwluser(lwluser)回复于 2003-08-02 22:20:41 得分 0
方法一:
//自定义方法
procedure TForm1.MyProce(par1:type....)Message WM_WINDOWPOSCHANGING;
方法二:
//自定义方法
procedure TForm1.MyProce(var Msg:TMessage);
begin
if Msg.wParam=WM_WINDOWPOSCHANGING then
......................
................
end;Top
2 楼onlydelphiandi(领会精神)回复于 2003-08-02 22:56:38 得分 0
行吗?为什么我的方法捕不到?Top
3 楼microd(重构一切)回复于 2003-08-03 17:29:09 得分 0
up,我也一样,无法截获其消息。
Top
4 楼bluenightsky()回复于 2003-08-03 20:43:24 得分 0
同意 lwluser(lwluser)
Top
5 楼FrameSniper(http://naoku.net/blogs/framesniper/)回复于 2003-08-03 20:47:02 得分 0
学习......Top
6 楼onlydelphiandi(领会精神)回复于 2003-08-04 13:50:14 得分 0
为什么我的方法捕不到?Top
7 楼lw549(那个孩子他爹)回复于 2003-08-04 19:52:57 得分 5
因为你没有procedure TForm1.MyProce(par1:type....)Message WM_WINDOWPOSCHANGING;
Message WM_WINDOWPOSCHANGING;很重要Top
8 楼onlydelphiandi(领会精神)回复于 2003-08-05 11:47:34 得分 0
to;楼上的
ApplicationEvents的OnMessage事件不是能截获所有的消息吗?Top
9 楼movingboy2(海蓝)回复于 2003-08-05 12:06:42 得分 5
推荐使用lwuser的方法一
ApplicationEvents的OnMessage只能捕获传递给Application这个对象的消息,其它的是无能为力的。帮助里TApplicationEvents的OnMessage页的第一行已经说得很明白了。Top
10 楼xzgyb(老达摩)回复于 2003-08-05 12:09:58 得分 15
Windows消息分两种,一个是进队的消息,一个是不进队的消息
OnMessage只能捕获进队的消息,象一般的键盘消息,鼠标消息,WM_PAINT,WM_TIMER这些消息
而你的SendMessage是直接调用窗口过程,所以OnMessage是收不到的,即使用PostMessage也不好使,因为WM_WINDOWPOSCHANGING就是进队消息,
如
if PostMessage(Handle,WM_WINDOWPOSCHANGING,$00000000,$0012F6D0) then
ShowMessage('succeed')
else
RaiseLastOSError;
会弹出 "消息只能与同步操作一起使用",PostMessage不成功Top
11 楼xzgyb(老达摩)回复于 2003-08-05 12:11:06 得分 3
我说错了,应该为
WM_WINDOWPOSCHANGING就不是进队消息
Top
12 楼onlydelphiandi(领会精神)回复于 2003-08-07 13:59:50 得分 0
靠,书上骗我,MD。
我回去研究一下先。Top




