언제나 델파이 초보입니다.
고수님들의 도움을 기다리고 있습니다.
아래처럼 메모장 윈도우를 찾아서 그 핸들을 얻어서
실행 폼안에 메모장을 넣었습니다.
물론 캡션하고, 보더를 없애구요.
여기까지는 잘 되었는데요
문제는 프로그램을 마우스로 사이즈를 변경 하면요
아래처럼 가져온 메모장은 크기가 변경이 되지 않습니다.
어떻게 해야 할지요?
메인 resize 이벤트에서 현재 notepad가 속해있는 핸들을 얻어서
변경된 만큼 다시 SetwindowsPos 를 해 주는 방법을 해봤는데요
마우스로 크기 변경을 하기위해서 드래그하면 바로 resize 이벤트가 발행 해서
처음에는 윈도우 pos가 적용이 되는데요
문제는 setwindowpos 가 실행되면서 다시 마우스의 사이즈 변경 상태가 풀려버리내요 ..
어떻게 해야 할지 좀 알려주세요.
감사합니다.
wnd := FindWindow('Notepade', nil); //노드패드에 핸들 구하기
Windows.SetParent( wnd, self.Handle ); //실행프로그램의 부모를 현재폼으로 설정
// 타이틀을 없앤다.
wlong := GetWindowLong(wnd, GWL_STYLE);
wlong := wlong - WS_CAPTION - WS_BORDER;
SetWindowLong(wnd, GWL_STYLE, round(wlong));
//위치크기 설정
SetWindowPos( wnd, 0, 0, 0, slef.Clientwidth, self.ClientHeight,
SWP_NOZORDER or SWP_SHOWWINDOW);
이경우 메모장이 child window로 설정되기 때문에
MoveWindow를 이용하셔야합니다...
SetWindowPos를 MoveWindow로 바꿔주세요.
procedure TForm1.FormResize(Sender: TObject);
begin
//위치크기 설정
MoveWindow(FMemoWnd, 0, 0, ClientWidth, ClientHeight, true);
end;