请问有什么办法在我自画TBUTTON时,自画的字不会被覆盖?(5分)

  • 主题发起人 主题发起人 yyyy123
  • 开始时间 开始时间
Y

yyyy123

Unregistered / Unconfirmed
GUEST, unregistred user!


我在用TEXTOUT对TBUTTON自画时,等我画好后,只要TBUTTON一被其他窗口覆盖,就看
不见自画的字,请问是为什么?
 
重载paint,在该事件中textout
 
自画程序放在SHOW事件中可以解决
 
没有Paint;
只有REPaint啊!

我是从TBUTTON继承下来的,是不是要从其他类继承?
 
先重画,后写字。
 
重绘了,但当我点击按扭时,我自己画的字就不见了!
 
到底是重载哪一个函数啊!
TBUTTON中没有PAINT啊
 

消息。
procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
看看TWinControl的代码
 
那点击的消息是什么啊!
 

你看看TButtonControl的代码

procedure TButtonControl.WndProc(var Message: TMessage);
begin
case Message.Msg of
WM_LBUTTONDOWN, WM_LBUTTONDBLCLK:
if not (csDesigning in ComponentState) and not Focused then
begin
FClicksDisabled := True;
Windows.SetFocus(Handle);
FClicksDisabled := False;
if not Focused then Exit;
end;
CN_COMMAND:
if FClicksDisabled then Exit;
end;
inherited WndProc(Message);
end;
 
影 子,不行啊
我点击时还是出现问题!
你能否写完整一点!谢谢
 
上面的代码只是参考,不是非要照搬。
如果还需要帮忙,将源码发到我邮箱里。
我的邮箱在个人说明里有,如果打算自己解决就算了。
 
有QQ吗?很急啊
 
sorry,我对QQ比较反感。而且,我的原则是在上班时间绝不用它。
 
源码:

procedure TmyButton.WMPaint(var message: TWMPaint);
var
DC, MemDC: HDC;
MemBitmap, OldBitmap: HBITMAP;
PS: TPaintStruct;
begin
if not FDoubleBuffered or (Message. DC <> 0) then
begin
if not (csCustomPaint in ControlState) and (ControlCount = 0) then
inherited
else
PaintHandler(Message);
end
else
begin
DC := GetDC(0);
MemBitmap := CreateCompatibleBitmap(DC, ClientRect.Right, ClientRect.Bottom);
ReleaseDC(0, DC);
MemDC := CreateCompatibleDC(0);
OldBitmap := SelectObject(MemDC, MemBitmap);
try
DC := BeginPaint(Handle, PS);
Perform(WM_ERASEBKGND, MemDC, MemDC);
Message.DC := MemDC;
WMPaint(Message);
Message.DC := 0;
BitBlt(DC, 0, 0, ClientRect.Right, ClientRect.Bottom, MemDC, 0, 0, SRCCOPY);
EndPaint(Handle, PS);
finally
SelectObject(MemDC, OldBitmap);
DeleteDC(MemDC);
DeleteObject(MemBitmap);
end;
end;
textout(getdc(handle),20,20,'hello',5);
end;
 
其实很简单,我就是要把BUTTON上的字设置成可以任意位置摆放的!就象上面!
textout(getdc(handle),20,20,'hello',5);
但在我发出点击事件时,我写上去的字 就不见了!不知道怎样解决!
上面除textout(getdc(handle),20,20,'hello',5)外的代码是从WINCONTROL的WMPaint里贴过来的!
我想只要改动一下这段代码,就应该可以达到我的要求!
 
你判断状态有问题!!
 
怎么个有问题法,多指教,谢谢!
 
后退
顶部