Home » Tipps & Tricks » Grafik » Sonstiges » Bild im MDI-Client Bereich anzeigen
Bild im MDI-Client Bereich anzeigen
Zuerst musst Du ein Image auf das Formular schmeißen und mit einem Bitmap füllen. Jetzt ändere die Eigenschaft FormStyle auf fsMDIForm. Schreibe in die Private-Deklaration folgendes:
private FClientInstance : TFarProc; FPrevClientProc : TFarProc; procedure ClientWndProc(var message: TMessage); { Private-Deklarationen }
In den Implementation-Teil kommt folgende Procedure, die wir gerade deklariert haben:
procedure TForm1.ClientWndProc(var message: TMessage); var Dc : hDC; Row : Integer; Col : Integer; begin with message do case Msg of WM_ERASEBKGND: begin Dc := TWMEraseBkGnd(message).Dc; for Row := 0 to ClientHeight div Image1.Picture.Height do for Col := 0 to ClientWidth div Image1.Picture.Width do BitBlt(Dc, Col * Image1.Picture.Width, Row * 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;
Wenn Du jetzt noch ins OnCreate-Ereignis von Form1 das reinschreibst:
FClientInstance := MakeObjectInstance(ClientWndProc); FPrevClientProc := Pointer(GetWindowLong(ClientHandle, GWL_WNDPROC)); SetWindowLong(ClientHandle, GWL_WNDPROC, LongInt(FClientInstance));
und ein zweites Formular erstellst, dessen FormStyle-Eigenschaft auf fsMDIChild steht, dann hast Du eine MDI-Anwendung mit Wallpaper.