Q&A

  • MainForm에 그림올리는 방법(자세히)부탁
MDI Main폼에 그림을 올리는 방법을 좀 자세히 설명해 주시면 후사(???)

하겠습니다.

서로 돕고 사는 사회 밝은 사회..

부탁드립니다

1  COMMENTS
  • Profile
    최석기 1999.08.14 01:36
    안인권 께서 말씀하시기를...

    > MDI Main폼에 그림을 올리는 방법을 좀 자세히 설명해 주시면 후사(???)

    > 하겠습니다.

    > 서로 돕고 사는 사회 밝은 사회..

    > 부탁드립니다



    아래 내용은 뉴스그룹에 소개되었던 MDI메인 폼에

    이미지를 삽입하는 팁입니다.

    보시고 도움 되시길 바랍니다.



    1. 새로운 Project를 만든다.

    2. Form의 Style을 fsMDIForm로 한다.

    3. Form에 넣은 Bitmap을 정한다.

    4. Private 선언부에 아래내용을 선언한다.



    FClientInstance : TFarProc;

    FPrevClientProc : TFarProc;

    procedure ClientWndProc(var Message: TMessage);



    5. 아래의 procedure를 구현부에 넣는다.



    procedure TMainForm.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;



    6. OnCreate Method를 아래와 같이 작성한다.



    FClientInstance := MakeObjectInstance(ClientWndProc);

    FPrevClientProc := Pointer(GetWindowLong(ClientHandle,

    GWL_WNDPROC));

    SetWindowLong(ClientHandle,

    GWL_WNDPROC, LongInt(FClientInstance));