unit Unit_MDIform;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls, StdCtrls;type
TForm1 = class(TForm)
Image1: TImage;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
FclientInstance,
FprevClientProc:TFarProc;
procedure ClientWndProc(var MEssage:tmessage);
public
{ Public declarations }
end;var
Form1: TForm1;implementation
{$R *.dfm}
procedure Tform1.ClientWndProc(var MEssage:tmessage);
var
Mydc: hDC;
ro,co:word; begin
with Message do
case msg of
WM_ERASEBKGND:
begin
MyDc:=TWMEraseBKGND(message).dc;
for Ro := 0 to clientHeight div Image1.Picture.Height do
for co := 0 to Clientwidth div Image1.Picture.Width do
BitBlt(MyDC,Co*Image1.picture.width,Ro*image1.picture.height,
image1.picture.width,image1.Picture.height,
image1.picture.bitmap.canvas.handle,0,0,SRCCOPY);
Result:=1;
end;
else
result:=callwindowProc(FprevClientProc,clientHandle,msg,wParam,lparam);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
FClientInstance:=MakeObjectInstance(clientwndProc);
FprevClientProc:=Pointer(getwindowLong(clientHandle,GWL_WNDPROC));
SetWindowLong(clientHandle,GWL_WNDPROC,longInt(FClientInstance));
end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls, StdCtrls;type
TForm1 = class(TForm)
Image1: TImage;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
FclientInstance,
FprevClientProc:TFarProc;
procedure ClientWndProc(var MEssage:tmessage);
public
{ Public declarations }
end;var
Form1: TForm1;implementation
{$R *.dfm}
procedure Tform1.ClientWndProc(var MEssage:tmessage);
var
Mydc: hDC;
ro,co:word; begin
with Message do
case msg of
WM_ERASEBKGND:
begin
MyDc:=TWMEraseBKGND(message).dc;
for Ro := 0 to clientHeight div Image1.Picture.Height do
for co := 0 to Clientwidth div Image1.Picture.Width do
BitBlt(MyDC,Co*Image1.picture.width,Ro*image1.picture.height,
image1.picture.width,image1.Picture.height,
image1.picture.bitmap.canvas.handle,0,0,SRCCOPY);
Result:=1;
end;
else
result:=callwindowProc(FprevClientProc,clientHandle,msg,wParam,lparam);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
FClientInstance:=MakeObjectInstance(clientwndProc);
FprevClientProc:=Pointer(getwindowLong(clientHandle,GWL_WNDPROC));
SetWindowLong(clientHandle,GWL_WNDPROC,longInt(FClientInstance));
end;end.
for co := 0 to Clientwidth div Image1.Picture.Width do
这两句总是报错:division by zero
if (Image1.Picture <> null) and !(Image1.Picture.Height) and (!Image1.Picture.Width )
begin
for Ro := 0 to clientHeight div Image1.Picture.Height do
for co := 0 to Clientwidth div Image1.Picture.Width do
image1.Align:=alClient;
我试了
还是报同样的错
我原来用的时jpg格式的