Rz控件的一个BUG,不知道怎么解决
ck_邬 2012-08-14 11:25:02 我用了RzSizePanel控件,每次在调试程序弹出界面时出现"Range Check Error"
追踪代码是如下函数,不知道错误在哪?出问题的单元是RzSplit.pas,
我开发的环境是XE2+WINXP。
procedure TRzCustomSizePanel.WMPaint( var Msg: TWMPaint );
var
DC, MemDC: HDC;
MemBitmap, OldBitmap: HBITMAP;
PS: TPaintStruct;
R: TRect;
begin
if not FDoubleBuffered or ( Msg.DC <> 0 ) then
begin
if not ( csCustomPaint in ControlState ) and ( ControlCount = 0 ) then
inherited
else
PaintHandler( Msg );
end
else
begin
DC := GetDC( 0 );
R := BoundsRect;
MemBitmap := CreateCompatibleBitmap( DC, R.Right, R.Bottom );
ReleaseDC( 0, DC );
MemDC := CreateCompatibleDC( 0 );
OldBitmap := SelectObject( MemDC, MemBitmap );
try
DC := BeginPaint( Handle, PS );
Perform( wm_EraseBkgnd, Longint( MemDC ), Longint( MemDC ) ); //出错在这里Range Check Error
Msg.DC := MemDC;
WMPaint( Msg );
Msg.DC := 0;
BitBlt( DC, 0, 0, R.Right, R.Bottom, MemDC, 0, 0, SRCCOPY );
EndPaint( Handle, PS );
finally
SelectObject( MemDC, OldBitmap );
DeleteDC( MemDC );
DeleteObject( MemBitmap );
end;
end;
end;