MDI窗体背景问题,高手进,乞求救命也!!!
今天遇到一个与大富翁上关于MDI背景图片的相同问题,就是下面的代码可以实现,不过图片必须为bmp,可是bmp的图片太大
很久没有编程序了,今天做一个MDI主窗口加背景,都忘了该怎么做了。
结果怎么也不行,老是报错“division by zero ”。
最后发现的image加载的是jpg文件,应该用bmp文件。
关键步骤:
1: private {应该包括下面3个声明}
FClientInstance,
FPrevClientProc : TFarProc;
PROCEDURE ClientWndProc(VAR Message: TMessage);
2:procedure TMainForm.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;
3:procedure TMainForm.FormCreate(Sender: TObject);
begin
FClientInstance := MakeObjectInstance(ClientWndProc);
FPrevClientProc := Pointer(GetWindowLong(ClientHandle, GWL_WNDPROC));
SetWindowLong(ClientHandle, GWL_WNDPROC, LongInt(FClientInstance));
end;
[解决办法]
Delphi的什么版本???高一点版本的,直接将image放在背景就可以了。
[解决办法]
用image不是一了百了
[解决办法]
image1.stretch := True