100分!调试通过立刻加分!类的处理OnMouseMove消息的procedure的难题!!!!!!!!!!!!! ( 积分: 100 )

  • 主题发起人 主题发起人 cmmail
  • 开始时间 开始时间
C

cmmail

Unregistered / Unconfirmed
GUEST, unregistred user!
条件:不能使用截获Application所有消息的方法,如Application.OnMessage:=MyMsgProc; 或者使用 TApplicationEvents。

创建一个新类TImageX = class(TImage); 现在要定义一个类的procedure来处理TImageX的OnMouseMove消息,
动态创建 var aa: TImageX;
aa:= TImageX.Create(Self);
aa.Parent:= Form1;
aa.Left:= 10;
aa.Top:= 10;
aa.AutoSize:= True;
aa.Name:= 'aa';
aa.Picture.LoadFromFile('bmp文件的路径');
aa.Hide ; // aa不可见
一般的方法,如
var i: integer=0;
1)自己定义:procedure WMMouseMove(var Message: TWMMouseMove); message WM_MOUSEMOVE;
procedure TImageX.WMMouseMove(var Message: TWMMouseMove);
begin
inherited;
Form1.label1.Caption:= inttostr(i);
i:= i+1;
end;
2)重载WndProc, procedure WndProc(var Message: TMessage); override;
procedure TImageX.WndProc(var Message: TMessage);
begin
if Message.Msg=WM_MOUSEMOVE then
begin
Form1.label1.Caption:= inttostr(i);
i:= i+1;
end;
inherited WndProc(Message);
end;
上面2种方法都只能在实例visible时有效,invisible时无效,我需要visible和invisible时,鼠标在aa上面移动时都能进行相应的处理。
100分!调试通过立刻给分!先说谢谢!
 
条件:不能使用截获Application所有消息的方法,如Application.OnMessage:=MyMsgProc; 或者使用 TApplicationEvents。

创建一个新类TImageX = class(TImage); 现在要定义一个类的procedure来处理TImageX的OnMouseMove消息,
动态创建 var aa: TImageX;
aa:= TImageX.Create(Self);
aa.Parent:= Form1;
aa.Left:= 10;
aa.Top:= 10;
aa.AutoSize:= True;
aa.Name:= 'aa';
aa.Picture.LoadFromFile('bmp文件的路径');
aa.Hide ; // aa不可见
一般的方法,如
var i: integer=0;
1)自己定义:procedure WMMouseMove(var Message: TWMMouseMove); message WM_MOUSEMOVE;
procedure TImageX.WMMouseMove(var Message: TWMMouseMove);
begin
inherited;
Form1.label1.Caption:= inttostr(i);
i:= i+1;
end;
2)重载WndProc, procedure WndProc(var Message: TMessage); override;
procedure TImageX.WndProc(var Message: TMessage);
begin
if Message.Msg=WM_MOUSEMOVE then
begin
Form1.label1.Caption:= inttostr(i);
i:= i+1;
end;
inherited WndProc(Message);
end;
上面2种方法都只能在实例visible时有效,invisible时无效,我需要visible和invisible时,鼠标在aa上面移动时都能进行相应的处理。
100分!调试通过立刻给分!先说谢谢!
 
Application在分发消息时是不是要对实例的visible进行判断?如果invisible,就不给它分发消息了?
 
后退
顶部