본문 바로가기

무언가 만들기 위한 지식/Win32/MFC

MFC 프로그램 전체화면으로 전환하기(제목표시줄 삭제)

보통 MFC로 프로그램이 실행되면 윈도우 창이 자신의 의도와 다르게 될 때가 많다.
좀 깔끔하게 하나의 Application을 돌리고 싶을 경우 전체화면으로 바꿔주고 싶을 경우가 있는데, 그때 사용해야할 코드들이 있다.

방법은 생성된 프로젝트의 MainFrm.cpp에서 약간의 코드를 작성하면 된다.
(MainFrm.cpp상의 OnCreate 함수)

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
    //전체화면 확장
	int cx = GetSystemMetrics(SM_CXSCREEN);
	int cy = GetSystemMetrics(SM_CYSCREEN);
	::SetWindowPos(this->m_hWnd, HWND_TOPMOST, -1, -1, cx+3, cy+3, SWP_FRAMECHANGED); 
	//전체화면 확장 끝
	return 0;
}  

위와 같이 작성하게 되면 제목표시줄메뉴창이 표시된 채로 전체화면으로 활성화된다.
제목표시줄 삭제를 위해서는 다음코드를 참고 한다.

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	//전체화면으로 확장
	LONG style = ::GetWindowLong(this->m_hWnd, GWL_STYLE);
	::ShowWindow(this->m_hWnd, SW_MAXIMIZE);
	style = ::GetWindowLong(this->m_hWnd, GWL_STYLE);
	style &= ~(WS_DLGFRAME | WS_THICKFRAME);
	::SetWindowLong(this->m_hWnd, GWL_STYLE, style); 
	//전체화면으로 확장 끝
	return 0;
}

이 상태로 하면 제목표시줄이 없어진 상태로 전체화면으로 전환된다.
(하지만 메뉴창은 남아있게 된다.)

메뉴창을 삭제하기 위해서는 다음 포스팅을 참고하자.