안녕하세요... 아이디 도둑 민성기 입니다.
예전에 나우의 송재훈님이 MDI메인폼에 그림넣는 법을
알려 주신 적 있는데요...
그 소스를 고대로 올려 드립니다. 참고 하세요...
파워러브 델파이 97년 8월호에서 가져 왔구만요... ^^;
unit Unit1;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
FOldDefWndProc : Pointer;
FNewDefWndProc : Pointer;
procedure ClientWndProc ( var Msg: TMessage );
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.ClientWndProc;
var
ClientDC : HDC;
MemDC : TBitmap;
MemDCX : Integer;
MemDCY : Integer;
begin
case Msg.Msg of
WM_PAINT : begin
ClientDC := GetDC ( ClientHandle );
MemDC := TBitmap.Create;
MemDC.LoadFromFile ( 'C:\ATHENA.BMP' );
MemDCX := 0;
MemDCY := 0;
repeat
repeat
BitBlt ( ClientDC, MemDCX, MemDCY, MemDC.Width,
MemDC.Height, MemDC.Canvas.Handle,
0, 0, SRCCOPY );
Inc ( MemDCX, MemDC.Width );
until MemDCX >= ClientWidth;
MemDCX := 0;
Inc ( MemDCY, MemDC.Height );
until MemDCY >= ClientHeight;
ReleaseDC ( ClientHandle, ClientDC );
MemDC.Free;
end;
end;
with Msg do
Result := CallWindowProc ( FOldDefWndProc, ClientHandle,
Msg, wParam, lParam );
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
FNewDefWndProc := MakeObjectInstance ( ClientWndProc );
FOldDefWndProc := Pointer(SetWindowLong(ClientHandle,
GWL_WNDPROC,
LongInt ( FNewDefWndProc ) ) );
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
SetWindowLong (ClientHandle, GWL_WNDPROC, LongInt FOldDefWndProc));
FreeObjectInstance ( FNewDefWndProc );
end;
end.
|