댈파이 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에서는 정말 문제 없이 보이는데... 머가 바뀐건가요 ?????
그걸 사용하시면 아마 문제점은 해결되리라 봅니다
그리고 소스도 포함되어 있기 때문에 사용자가 임의로 여러가지 형태로
이미지를 Load할수 있게 만들수 있을겁니다.
그럼 ..