WM_GETMINMAXINFO

인수

wParam : 사용되지 않음

lParam : 윈도우의 최소, 최대 크기를 지정하는 MINMAXINFO 구조체의 포인터이다. 이 구조체값을 변경하면 최소, 최대 크기를 변경할 수 있다.

typedef struct tagMINMAXINFO {
    POINT ptReserved; 
    POINT ptMaxSize; 
    POINT ptMaxPosition; 
    POINT ptMinTrackSize; 
    POINT ptMaxTrackSize; 
} MINMAXINFO; 
멤버

설명

ptReserved

예약된 멤버

ptMaxSize

윈도우를 최대화했을 때의 크기

ptMaxPosition

윈도우를 최대화했을 때의 위치

ptMinTrackSize

경계선을 드래그하여 조정할 수 있는 최소 크기

ptMaxTrackSize 경계선을 드래그하여 조정할 수 있는 최대 크기
설명

이 메시지는 윈도우의 크기나 위치가 변경되기 직전에 윈도우에게 보내진다. 응용 프로그램이 이 메시지의 등답하여 lParam으로 전달되는 MINMAXINFO 구조체를 변경하면 윈도우의 크기나 위치는 이 구조체의 값에 영향을 받게 된다. 이 메시지를 처리하지 않으면 윈도우의 크기는 자유롭게 조정할 수 있으나 이 메시지에서 최소, 최대 크기를 변경하면 그 범위내에서만 윈도우 크기 조정이 가능하다.

만약 작업 영역이 너무 좁으면 차일드 컨트롤을 배치하는데 문제가 있거나 텍스트 배치가 어려워진다면 이 메시지를 처리하여 최소 크기를 일정 폭으로 제한할 수 있다. MINMAXINFO 구조체의 멤버 전체를 다 수정할 필요는 없으면 원하는 멤버만 수정할 수 있다.

리턴

메시지를 처리했으면 0을 리턴한다.

예제

예제 1

다음 예제는 이 메시지를 처리하여 윈도우의 트래킹 크기를 일정하게 제한한다.

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
	HDC hdc;
	PAINTSTRUCT ps;
	LPMINMAXINFO mmi;
	TCHAR Mes[]="이 윈도우의 최소 크기는 200*100, 최대 크기는 600*300입니다";

	switch(iMessage) {
	case WM_GETMINMAXINFO:
		mmi=(LPMINMAXINFO)lParam;
		mmi->ptMinTrackSize.x=200;
		mmi->ptMinTrackSize.y=100;
		mmi->ptMaxTrackSize.x=600;
		mmi->ptMaxTrackSize.y=300;
		mmi->ptMaxPosition.x=10;
		mmi->ptMaxPosition.y=10;
		mmi->ptMaxSize.x=800;
		mmi->ptMaxSize.y=200;
		return 0;
	case WM_PAINT:
		hdc=BeginPaint(hWnd, &ps);
		TextOut(hdc,10,10,Mes,lstrlen(Mes));
		EndPaint(hWnd, &ps);
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

경계선을 드래그하여 줄일 수 있는 윈도우의 최소 크기는 200*100이하가 될 수 없으며 최대 크기는 600*300이상이 될 수 없다. 또한 타이틀 바를 더블 클릭하여 최대화했을 때 윈도우 크기는 800*200이 되며 이때의 위치는 10,10이 된다.

플랫폼

95이상

참조

 


written by http://www.winapi.co.kr