■ 윈도우 최대 및 최소 크기 설정 - WM_GETMINMAXINFO



1. WM_GETMINMAXINFO
  - 윈도우의 크기(SIze) 나 위치(Position) 이 변경되었을때 윈도우에 보내지는 메시지
  - 윈도우의 최대, 최소 크기 및 위치를 설정할 수 있다.


2. MINMAXINFO structure
  - 윈도우의 최대 최소 크기 및 위치, 윈도우의 변경되는 크기에 대한 정보를 담은 구조체

Syntax
typedef struct {
    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);
}





cf) 분할 윈도우를 사용하였을 경우
    CMainFrame 의 크기 제한은 위와 같은 방법으로 할 수 있지만
    각각의 분할윈도우의 크기 제한, 즉 splitter bar 의 위치는 다른 방법을 사용하여 제한 해야 함.
 
Posted by six605
,