1.TApplication.OnMessage
2.procedure WndProc
3.procedure ...;message MY_MESSAGE
4.procedure DefaultHandler详细点啊,让我明白这个问题啊!!
2.procedure WndProc
3.procedure ...;message MY_MESSAGE
4.procedure DefaultHandler详细点啊,让我明白这个问题啊!!
解决方案 »
- [求助]---------------大虾帮看一下这个代码-------------
- unit Psock中老跳出提示,怎么去掉?
- button上面的字符自动折行问题
- 有一个回调函数,响应过程为1毫秒一次,我该怎么样处理该回调函数
- Delphi取出memo的数据
- 关于WinExec的问题?
- 用Timage装载了图片,是否要位图才能用编辑呢,急啊
- delphi6在Excel中激活sheet,插入、删除及注销问题
- 如何让DbGrid和StringGrid具有这样的功能???
- !!!SOS!!!!如何检索Access数据库中超过某一值的数据,并统计超标数据的个数
- 如何取出ListView里的值
- 早上好!郁闷啊,我想问问大家,为什么我的程序(下载4000个文件,每个文件2M)运行会死机?
mainwndproc是定义在Twincontrol类中的一个静态方法,不能被重载(Override)。它不直接处理消息,而是交由wndproc方法处理,并为wndproc方法提供一个异常处理模块。
2:
Wndproc是在Tcontrol类中定义的一个虚拟方法,由它调用dispatch方法来进行消息的分配,
3:
而Dispatch方法会根据消息号码调用构件的最后代类中处理此消息的句柄方法.如果此构件和它的祖先类中都没有对应此消息的处理句柄,Dispatch方法便会调用Defaulthandler方法.Defaulthandler方法是定义于Tobject中的虚拟方法,
4:
重 载 虚 拟 方 法wndproc 的 一 般 过 程 如 下:procedure Tmyobject.wndproc(var message:Tmessage);
begin
{...判断此消息是否该处理..}
inheritedwndproc(message);
{未处理的消息交由父辈wndproc方法处理}
end;由此可以看出在wndproc方法中处理消息的优势是可以过滤整个范围内的消息,而不必为每个消息指定一个处理句柄,事实上Tcontrol构件中就是利用它来过滤并处理所有的鼠标消息的(从WM_mousefirst到WM_mouselast,如下代码示).同样利用它也可以阻止某些消息被发送给处理句柄。procedure TControl.WndProc(var Message: TMessage);
begin
if (Message.Msg>=WM_MOUSEFIRST) and (Message.Msg <= WM_MOUSELAST) then
if Dragging then{处理拖曳事件}
DragMouseMsg(TWMMouse(Message))
else
...{处理其他鼠标消息}
end;
Dispatch(Message);
{否则正常发送消息}
end;
它处理消息的顺序是根据消息发生的顺序和消息的优先级;