Q&A

  • (댈파이5 -> 댈파이6 ) 미디폼의 배경그림이 잔상이 생깁니다.
댈파이 5에서 작업 했던 프로그램입니다.

이번에 댈파이 6으로 바꾸고 이프로그램을 불러와 쓸려고 하는데..

다른건 크게 이상이 없는데 .. 미디 폼의 배경화면이. 잔상이 생기고 있습니다.

미디폼에 아래는 상태바, 위에는 툴바가 하나씩 들어 가있는 상태고요..

배경화면을 보이게 하기위에 아래와 같은 작업을 했고요.. 이건 댈5에서는 잘 보이고 있는상태고요 이번에 댈 6으로 바꿔서 작업할려다가 생긴 문제입니다.

고수님의 조언 부탁드립니다.



=== 소스.. 우선 미디폼의 크리니트 이벤트. ..

procedure TFMDI.FormCreate(Sender: TObject);

begin

Image1.Picture.Bitmap := FMDI.GetFormImage;

FClientInstance := MakeObjectInstance(ClientWndProc); // JPG를 BMP 로

FPrevClientProc := Pointer(GetWindowLong(ClientHandle,GWL_WNDPROC));

SetWindowLong(ClientHandle,GWL_WNDPROC, LongInt(FClientInstance));

StatusBar1.Panels[1].Text := '오늘은 : ' + FormatDateTime('YYYY-MM-DD',Now) + ' 일 입니다.';

StatusBar1.Panels[2].Text := '사용자';

end;



문제의 프로시져 ?????

procedure TFMDI.ClientWndProc(var Message: TMessage);

var

MyDC : hDC;

begin

with Message do

case Msg of

WM_ERASEBKGND:

begin // JPG 파일을 BMP 처럼 바꿔주는 코드 폼이 Create 될때

MyDC := TWMEraseBkGnd( Message ).DC;

//Only One...

// BitBlt( MyDC, 0, 0, 793, 554,

// Image1.Picture.Bitmap.Canvas.Handle, 0, 0, SRCCOPY );

BitBlt(MyDC, 0, -30, ClientWidth, ClientHeight,

Image1.Picture.BitMap.Canvas.Handle, 0, 0, SRCCOPY);

Result := 1;

end;

else

Result := CallWindowProc( FPrevClientProc, ClientHandle, Msg, wParam,

lParam );

end;

end;





위에꺼를 고쳐주셔도 좋구요 댈6에서 미디폼에 배경화면을 넣어주는 방법을 제시해주셔도 감사하겟습니다. 댈5에서는 정말 문제 없이 보이는데... 머가 바뀐건가요 ?????



1  COMMENTS
  • Profile
    Canival 2001.12.24 12:55
    자료실 검색에서 MDI 라고 치시면 mdiwallp.zip 이란 화일이 나올겁니다



    그걸 사용하시면 아마 문제점은 해결되리라 봅니다



    그리고 소스도 포함되어 있기 때문에 사용자가 임의로 여러가지 형태로



    이미지를 Load할수 있게 만들수 있을겁니다.



    그럼 ..