Z
zw960122
Unregistered / Unconfirmed
GUEST, unregistred user!
基于http://www.delphibbs.com/delphibbs/dispq.asp?lid=1158681
一帖的发表, 本人再谈今天研究的结果 -- 消息处理
private
FWWOnClick : TNotifyEvent;
published
property WWOnClick : TNotifyEvent read FWWOnClick write FWWOnClick;
上面的代码是对 WWOnClick 的一个说明, 说明它只是一个通知消息。为什么
把它声明成通知消息而不是其它普通属性呢?下面的代码说明了问题。
procedure WWClick;
begin
if Assigned(FOnClick) then FOnClick(Self);
end;
上面的代码是对FOnClick 字段的处理过程, 它只不过是个过程, 再没有任何更多的
可以描述的了。 Only a procedure
procedure WMLButtonUp(var Message: TWMLButtonUp);
begin
inherited;
if csCaptureMouse in ControlStyle then MouseCapture := False;
if csClicked in ControlState then
begin
// Exclude(FControlState, csClicked);
if PtInRect(ClientRect, SmallPointToPoint(Message.Pos)) then Click;
end;
DoMouseUp(Message, mbLeft);
end;
WMLButtonUp过程是这样声明的
procedure WMLButtonUp(var Message: TWMLButtonUp); message WM_LBUTTONUP;
在这里是消息处理方法, 这种方法是四种Delphi 方法中的一种, 它可以不通过
procedure WndProc(var Message: TMessage); 这个过程而直接处理指定的消息。
这样, 一个鼠标点击事件就实现了。
以上就是今天的研究成果, 下面是从书上看来的,各位见笑了:
WndProc可以处理所有的消息, 一般来说, 都是一个 Case 语句的处理过程。
在Borland C++ 时代, 这个过程太常见了。 美其名日:消息处理过程(消息循环)。
比如, 点击事件可以这样处理
case Message.Msg of
CN_COMMAND:
FWWOnClick(Self);
end;
很直接吧。 在D 中对很多消息类型做了封装象上面的WM_LBUTTONUP 消息就被
封装成了TWMLButtonUp 类。 这样做只不过是为了处理方便了简单吧。
今天就吹到这儿。
一帖的发表, 本人再谈今天研究的结果 -- 消息处理
private
FWWOnClick : TNotifyEvent;
published
property WWOnClick : TNotifyEvent read FWWOnClick write FWWOnClick;
上面的代码是对 WWOnClick 的一个说明, 说明它只是一个通知消息。为什么
把它声明成通知消息而不是其它普通属性呢?下面的代码说明了问题。
procedure WWClick;
begin
if Assigned(FOnClick) then FOnClick(Self);
end;
上面的代码是对FOnClick 字段的处理过程, 它只不过是个过程, 再没有任何更多的
可以描述的了。 Only a procedure
procedure WMLButtonUp(var Message: TWMLButtonUp);
begin
inherited;
if csCaptureMouse in ControlStyle then MouseCapture := False;
if csClicked in ControlState then
begin
// Exclude(FControlState, csClicked);
if PtInRect(ClientRect, SmallPointToPoint(Message.Pos)) then Click;
end;
DoMouseUp(Message, mbLeft);
end;
WMLButtonUp过程是这样声明的
procedure WMLButtonUp(var Message: TWMLButtonUp); message WM_LBUTTONUP;
在这里是消息处理方法, 这种方法是四种Delphi 方法中的一种, 它可以不通过
procedure WndProc(var Message: TMessage); 这个过程而直接处理指定的消息。
这样, 一个鼠标点击事件就实现了。
以上就是今天的研究成果, 下面是从书上看来的,各位见笑了:
WndProc可以处理所有的消息, 一般来说, 都是一个 Case 语句的处理过程。
在Borland C++ 时代, 这个过程太常见了。 美其名日:消息处理过程(消息循环)。
比如, 点击事件可以这样处理
case Message.Msg of
CN_COMMAND:
FWWOnClick(Self);
end;
很直接吧。 在D 中对很多消息类型做了封装象上面的WM_LBUTTONUP 消息就被
封装成了TWMLButtonUp 类。 这样做只不过是为了处理方便了简单吧。
今天就吹到这儿。