Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[2627] [답변] K8402/ 메인화면에 그림넣기
이정욱 [ ] 1502 읽음    1998-04-30 05:41
안녕하세요... 아이디 도둑 민성기 입니다.
예전에 나우의 송재훈님이 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.


+ -

관련 글 리스트
2627 [답변] K8402/ 메인화면에 그림넣기 이정욱 1502 1998/04/30
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.