F
feitianbianfu16
Unregistered / Unconfirmed
GUEST, unregistred user!
我从TCustomControl继承 ,写了一个控件,在实现透明的时候,如果鼠标放上去就在控件上画一种颜色,如果鼠标不在上面的时候就是透明;现在我的透明实现了,但是鼠标不在上面是透明的,如果鼠标离开的画,刚刚画过的颜色自己没有擦除调,还有,所以就不是透明的了,不知道现在改如何去掉这个颜色?
本来想sendmessage一个WM_ERASEBKGND,但是没有效果!我的WM_ERASEBKGND是这样的:
procedure Txxxx.WMEraseBkGnd(var Message: TWMEraseBkGnd);
var
DC: hDC;
i:integer;
p:TPoint;
begin
if FTransparent then
begin
if Assigned(Parent) then
begin
DC:=Message.DC;
i:=SaveDC(DC);
p:=ClientOrigin;
Windows.ScreenToClient(Parent.Handle, p);
p.x:=-p.x;
p.y:=-p.y;
MoveWindowOrg(DC,p.x,p.y);
SendMessage(Parent.Handle,$0014,DC,0);
TCtrl(Parent).PaintControls(DC,nil);
RestoreDC(DC,i);
end;
end
else
inherited;
end;
本来想sendmessage一个WM_ERASEBKGND,但是没有效果!我的WM_ERASEBKGND是这样的:
procedure Txxxx.WMEraseBkGnd(var Message: TWMEraseBkGnd);
var
DC: hDC;
i:integer;
p:TPoint;
begin
if FTransparent then
begin
if Assigned(Parent) then
begin
DC:=Message.DC;
i:=SaveDC(DC);
p:=ClientOrigin;
Windows.ScreenToClient(Parent.Handle, p);
p.x:=-p.x;
p.y:=-p.y;
MoveWindowOrg(DC,p.x,p.y);
SendMessage(Parent.Handle,$0014,DC,0);
TCtrl(Parent).PaintControls(DC,nil);
RestoreDC(DC,i);
end;
end
else
inherited;
end;