본문 바로가기

Programming/Win32&MFC&COM

MFC 다이얼로그, SDI, MDI의 최소 크기(Size) 설정

반응형

MFC에서 프로젝트를 만들 때 SDI, MDI, 다이얼로그 중에 하나를 선택합니다.

만들어진 창이 최소 크기나 최대 크기가 정해지면 좋을 때가 있습니다.

버튼들이 배치가 되어있는데 창이 타이틀만 남겨놓고 줄어드는 것은 그리 좋아 보이지 않습니다.

이 창들의 최소 크기를 정하는 방법을 알아보겠습니다.

같은 방법으로 이 방법으로 최대 크기의 수정도 가능합니다.

먼저 프로젝트를 생성하면 다음과 같이 MainFrm.h가 생깁니다.

SDI, MDI에서는 MainFrm.h이지만 다이얼로그에서는 약간 다르게 생성이 됩니다.

프로젝트명Dlg.h 라는 파일이 생기게 됩니다.

각자 해당하는 파일을 엽니다.

여기서는 SDI를 기준으로 설명하겠습니다.

헤더 파일에 커서를 주면 좌측에 속성에 다음과 같이 나오게 됩니다.

그럼 빨간색 네모 안의 아이콘(메시지)를 클릭합니다.

다양한 메시지들을 확인할 수 있고 그 중에서 WM_GETMINMAXINFO 라는 메시지가 있습니다.

이 메시지를 처리할 메시지 핸들러를 작성하면 됩니다.

WM_GETMINMAXINFO의 우측에 보이는 아래 화살표를 클릭하고 Add를 누르면 됩니다.

다음과 같은 코드를 추가합니다.

lpMMI->ptMinTrackSize.x = 600;
lpMMI->ptMinTrackSize.y = 600;

가로와 세로의 최소값을 설정하게 됩니다.

화면의 크기가 600 미만으로 내려가려고 할 때 화면의 크기가 조절되지 않습니다.

최대값도 동일하게 Min을 Max로만 변경하면 설정이 가능합니다.

소스 코드는 다음과 같습니다.

void CMainFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
{
	// TODO: Add your message handler code here and/or call default

	lpMMI->ptMaxTrackSize.x = 1024;
	lpMMI->ptMaxTrackSize.y = 768;

	CFrameWndEx::OnGetMinMaxInfo(lpMMI);
}
반응형