C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
분야별 포럼
C++빌더
델파이
파이어몽키
C/C++
프리파스칼
파이어버드
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

자유게시판
세상 살아가는 이야기들을 나누는 사랑방입니다.
[11865] 엇... 윈도우 Height는 스크린 Height보다 커질 수가 없군요..
박지훈.임프 [cbuilder] 1893 읽음    2006-06-15 05:57
개발중인 프로그램의 몇몇 화면들이, 1024x768같은 저해상도에서 아래가 짤리는 현상이 발생해서...
몇시간 동안이나 VCL 소스를 디버깅했는데... 전혀 예상치 못한 데에서 뒤통수를 맞았습니다.

황당하게도... MS 윈도우 자체가 스크린 높이보다 큰 윈도우는 무조건 넘는 높이만큼 잘라버리는군요.
Win32의 SetWindowPos() 함수에 스크린 높이보다 더 큰 Height를 넘기면 넘는 만큼을 잘라버리고 설정하네요.

지금 MDI 차일드로 높이 768 이상의 폼이 필요한데, 고해상도의 개발 PC에서 컴파일해서 1024x768 저해상도에서 실행
시키면 아랫부분이 무조건 잘려 버립니다. 전혀 해결책이 없군요.

난감... 일반 폼에서야 스크린 크기보다 더 높은 폼을 쓸 필요가 없지만 MDI에서는 필요할 수 있는데, 이런 단세포적인
높이 제한을 걸어놓다니.. 정말 짜증나네요.
양병규 [bkyang]   2006-06-15 08:29 X
WM_GETMINMAXINFO 메세지를 핸들링하면 최대크기를 설정할수 있습니다.

type
  TForm1 = class(TForm)
  private
    procedure WMGetMinMaxInfo(var Message: TWMGetMinMaxInfo); message WM_GETMINMAXINFO;
  end;

procedure TForm1.WMGetMinMaxInfo(var Message: TWMGetMinMaxInfo);
begin
  Message.MinMaxInfo^.ptMaxTrackSize.Y := 3000; //Height 최대 크기를 3000픽셀로..
  inherited;
end;

^^;
박지훈.임프 [cbuilder]   2006-06-15 08:55 X
엇 정말 그렇군요.
WM_GETMINMAXINFO 메시지가 거기도 관련이 되어 있을 줄은 생각을 못했는데...
정말 감사합니다. ^^
박지훈.임프 [cbuilder]   2006-06-15 09:01 X
생각해보니 아마도... MS윈도우의 WM_GETMINMAXINFO 메시지의 디폴트 핸들러가 최대값으로 스크린의 크기를 리턴할 것 같군요.
테스트해보고 싶은데 오늘은 급히 출근을 해야 해서.. 쩝 (이 얼마만에 오전 출근인가... --;;)

+ -

관련 글 리스트
11865 엇... 윈도우 Height는 스크린 Height보다 커질 수가 없군요.. 박지훈.임프 1893 2006/06/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.