본문 바로가기
C & C++/MFC 컨트롤

MFC SDI 프로그램 최대화 시작

by izen8 2011. 11. 2.
반응형
 BOOL CInternetTamApp::InitInstance() 함수 안에 보면 다음과

 같은 코드가 있다.



ShowWindows(SW_SHOW); 를 다음과 같이 변경
ShowWindows(SW_SHOWMAXIMIZED);


///////////////////////////////////////////////////////////////////////////////////////////////

다이얼로그박스를 최대 설정은 아래 [Source Code 1] 처럼 ShowWindow(SW_MAXIMIZE) 함수 호출하면 된다.
(윈도우에 Maximize Box가 있을 경우....)

[Source Code 1] 

다음의 코드를 OnInitDailog() 등의 초기화 함수에 넣어주면 풀스크린으로 시작합니다.

Dialog Base에서는...  ShowWindow(SW_SHOWMAXIMIZED); // 화면을 최대화...

SDI에서는...  ResizeParentToFit(FALSE);

그러나...

다이얼로그 윈도우의 캡션을 없앴을 경우(Title Bar 속성 해제), Maximize Box 속성 해제을 하고 ShowWindow(SW_MAXIMIZE) 을 하면 작업표시줄(Task Bar)가 가려지는 현상이 일어난다. (결국 TaskBar 못 본다.)
작업표시줄을 그대로 있고, 윈도우만 최대화할 경우 [Source Code 2] 참조...

WM_GETMINMAXINFO 메시지 처리.


void CSystemInfoDlg::OnOK()
{
     // TODO: Add extra validation here

     ShowWindow(SW_MAXIMIZE);               // 이것 호출...
     //CDialog::OnOK();
}

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

     RECT rc;
     SystemParametersInfo(SPI_GETWORKAREA, 0, &rc, 0);
     lpMMI->ptMaxSize.x = rc.right;
     lpMMI->ptMaxSize.y = rc.bottom;
     lpMMI->ptMaxPosition.x = 0;
     lpMMI->ptMaxPosition.y = 0;
     lpMMI->ptMinTrackSize.x = GetSystemMetrics(SM_CXMINTRACK);
     lpMMI->ptMinTrackSize.y = GetSystemMetrics(SM_CYMINTRACK);
     lpMMI->ptMaxTrackSize.x = GetSystemMetrics(SM_CXMAXTRACK);
     lpMMI->ptMaxTrackSize.y = GetSystemMetrics(SM_CYMINTRACK);

     CDialog::OnGetMinMaxInfo(lpMMI);
}

[Source Code 2]와 같이 하면, 최대화 버튼없는 경우, 타이틀이 없는 경우에서 SW_MAXIMIZE 하면, 작업표시줄은 그대로 있고, 해당 윈도우가 최대화 된다.


반응형

댓글