C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[5895] Re:마우스로 드래그해서 폼의 크기를 조정할 때 일정 크기 이하로 줄일수 없게 하고싶어요.
박지훈.임프 [cbuilder] 2796 읽음    2001-03-06 00:13
고명학 님이 쓰신 글 :
: 안녕하세요..
:
: 폼의 크기를 마우스로 늘렸다가 줄였다가 할 수 있는 상태인데요..
:
: 폼의 크기를 마우스로 드래그를 해서 최소로 줄이면 타이틀바의 멘끝부분만 나오는 사이즈로 줄일 수 가 있는데요.
:
: 일정한 크기이하로 줄어들지 안게하려면.. 어떻게 해야 하나요..
:
: 예를 들어... 윈집같은 경우 제일 작은 크기가 정해져 있어서 그이하로 줄어들지 않는 경우처럼요...
:
: 알려주시면 고맙겠습니다...
:


임펠리테리입니다.

폼을 일정 크기 이하로 줄이는 것을 막기 위해서는 폼에 들어오는 메시지 중 WM_GETMINMAXINFO 메시지를 가로채서 처리하면 됩니다. 이 메시지는 폼이 리사이즈될 때 호출되는데, 이 메시지의 LParam에 넘어오는 MINMAXINFO 구조체의 ptMinTrackSize에 최소 크기를 돌려주면 이 크기 이하로는 줄어들지 않습니다. 여기서는 메시지 핸들러를 이용해서 구현해보도록 하죠.

먼저 폼 클래스 선언의 마지막 } 를 닫기 직전에 다음과 같이 메시지핸들러를 만들어넣습니다.
BEGIN_MESSAGE_MAP
    MESSAGE_HANDLER(WM_GETMINMAXINFO, TWMGetMinMaxInfo, WMGetMinMaxInfo);
END_MESSAGE_MAP(TForm);

그런 후, 역시 폼 클래스의 멤버함수로(private가 좋습니다) 다음과 같이 실제 메시지핸들러 함수의 선언을 추가합니다.
void WMGetMinMaxInfo(TWMGetMinMaxInfo &msg);

마지막으로, 폼의 cpp 파일에 메시지핸들러의 실제 바디를 만듭니다.
void TForm1::WMGetMinMaxInfo(TWMGetMinMaxInfo &msg)
{
    msg.MinMaxInfo->ptMinTrackSize = Point(200, 200);
}

이것으로 끝입니다. 여기서는 ptMinTrackSize를 200, 200으로 설정했으므로 200x200 크기 이하로는 폼이 줄어들지 않습니다.

이와 비슷하게, ptMaxTrackSize를 설정해주면 리사이즈해서 늘릴 수 있는 최대크기가 정해집니다. 최대화 버튼을 눌렀을 때의 크기를 설정하려면 ptMaxSize를 설정하면 되구요.

그럼 참고하시길...

+ -

관련 글 리스트
5890 마우스로 드래그해서 폼의 크기를 조정할 때 일정 크기 이하로 줄일수 없게 하고싶어요. 고명학 2376 2001/03/05
5895     Re:마우스로 드래그해서 폼의 크기를 조정할 때 일정 크기 이하로 줄일수 없게 하고싶어요. 박지훈.임프 2796 2001/03/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.