截取Form的WindowProc, 然后实现WM_PAINT. 例如: constructor TMyControl.Create(Owner:TControl); begin Inherited; FOwner:=Owner; if Assigned(Owner) then begin FOldProc:=Owner.WindowProc; Owner.WindowProc:=MyWindProc; end; end; destructor TMyControl.Destroy; begin if Assigned(FOwner) then FOwner.WindowProc:=FOldProc; Inherited; end;procedure TMyControl.MyWindProc(var Message: TMessage); begin if Message.Msg=WM_Paint then ....//截获WM_Paint消息 else FOldProc(Message); end;
然后实现WM_PAINT. 例如:
constructor TMyControl.Create(Owner:TControl);
begin
Inherited;
FOwner:=Owner;
if Assigned(Owner) then
begin
FOldProc:=Owner.WindowProc;
Owner.WindowProc:=MyWindProc;
end;
end;
destructor TMyControl.Destroy;
begin
if Assigned(FOwner) then FOwner.WindowProc:=FOldProc;
Inherited;
end;procedure TMyControl.MyWindProc(var Message: TMessage);
begin
if Message.Msg=WM_Paint then ....//截获WM_Paint消息
else FOldProc(Message);
end;