■ 윈도우 최대 및 최소 크기 설정 - WM_GETMINMAXINFO
1. WM_GETMINMAXINFO
- 윈도우의 크기(SIze) 나 위치(Position) 이 변경되었을때 윈도우에 보내지는 메시지
- 윈도우의 최대, 최소 크기 및 위치를 설정할 수 있다.
2. MINMAXINFO structure
- 윈도우의 최대 최소 크기 및 위치, 윈도우의 변경되는 크기에 대한 정보를 담은 구조체
Syntax
typedef struct {
POINT ptReserved;
POINT ptMaxSize;
POINT ptMaxPosition;
POINT ptMinTrackSize;
POINT ptMaxTrackSize;
} MINMAXINFO;
POINT ptReserved;
POINT ptMaxSize;
POINT ptMaxPosition;
POINT ptMinTrackSize;
POINT ptMaxTrackSize;
} MINMAXINFO;
Member
- ptReserved : 예약된 값, 사용되지 않는다.
- ptMaxSize : 윈도우의 최대 가로길이와 세로 길이를 POINT 형식의 값으로 저장한다. (POINT.x POINT.y)
이 값은 주 모니터에 의존 된 값이며, 최상위 윈도우를 위한 값이다.
- ptMaxPosition : 최대화된 윈도우의 x,y축 위치(POSITION) 값이다. (POINT.x POINT.y)
- ptMinTrackSize : 윈도우의 크기가 변경될 때 최소의 크기를 명시한다.
이 값은 프로그램적으로 얻어진다.
System metrcs SM_CXMINTRACK and SM_CYMINTRACK. 으로부터
- ptMaxTrackSize : 윈도우의 크기가 변경될 때 최대의 크기를 명시한다.
이 값은 virtual screen 과 프로그램 적으로 얻어진다.
System metrics SM_CXMAXTRACK and SM_CYMAXTRACK. 으로부터
Remark
- 여러개의 모니터를 사용할 경우, 주 모니터에 대한 값 ptMaxSize, ptMaxPosition 에 사용된다.
Structure Information
Header Declared in Winuser.h, include Windows.h
Minimum operating systems Windows 95, Windows NT 3.1
3. 예제
void CMainFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
{
lpMMI->ptMinTrackSize.x = 400;
lpMMI->ptMinTrackSize.y = 800;
CFrameWnd::OnGetMinMaxInfo(lpMMI);
}
{
lpMMI->ptMinTrackSize.x = 400;
lpMMI->ptMinTrackSize.y = 800;
CFrameWnd::OnGetMinMaxInfo(lpMMI);
}
cf) 분할 윈도우를 사용하였을 경우
CMainFrame 의 크기 제한은 위와 같은 방법으로 할 수 있지만
각각의 분할윈도우의 크기 제한, 즉 splitter bar 의 위치는 다른 방법을 사용하여 제한 해야 함.