首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

MDI窗体背景有关问题,乞命也!

2012-06-06 
MDI窗体背景问题,高手进,乞求救命也!!!今天遇到一个与大富翁上关于MDI背景图片的相同问题,就是下面的代码

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

热点排行