MFC MDI 전체 화면 구현
class CMainFrame : public CMDIFrameWnd
{
......
//데이터 멤버
RECT m_rcOldWnd;//이전 창 위치 및 크기
BOOL m_bFullScreen;//전체 화면 표시 플래그
//구성원 함수
void EnterFullScreen();//전체 화면 void QuitFullScreen(),//전체 화면 종료
}
2.MainFrame에서.cpp에서 함수 구현:
먼저 구조 함수에서 m 초기화bFullScreen:
CMainFrame::CMainFrame():m_bFullScreen( false){...}
PreCreate Window () 함수와 Oncreate () 함수는 수정하지 않고 기본값으로 사용할 수 있습니다.
그 다음에 관건적인 부분: 전체 화면을 실현하고 전체 화면을 종료한다.
//
void CMainFrame::EnterFullScreen()
{
// ,
if(m_bFullScreen)
{
return ;
}
//
GetWindowRect(&m_rcOldWnd);
// , ,
m_wndStatusBar.ShowWindow( SW_HIDE);
m_wndToolBar.ShowWindow( SW_HIDE);
SetMenu(NULL);//
ModifyStyle(0 ,WS_POPUP);
ModifyStyle(WS_CAPTION, 0);
ModifyStyle(WS_BORDER,0);
ModifyStyle(WS_THICKFRAME,0);
// ,
MoveWindow(0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN));
MDIGetActive()->ShowWindow(SW_SHOWMAXIMIZED);//
m_bFullScreen= true;
}
//
void CMainFrame::QuitFullScreen()
{
// ,
if(!m_bFullScreen)
{
return ;
}
m_bFullScreen = false;
// ,
m_wndStatusBar.ShowWindow(SW_SHOW);
m_wndToolBar.ShowWindow(SW_SHOW);
//
MoveWindow(&m_rcOldWnd);
ModifyStyle(0, WS_CAPTION);
ModifyStyle(0, WS_BORDER);
ModifyStyle(0, WS_THICKFRAME);
// , WS_MAXIMIZE,
ModifyStyle(0, WS_OVERLAPPED | FWS_ADDTOTITLE |WS_MINIMIZEBOX | WS_MAXIMIZEBOX /* |WS_MAXIMIZE*/);
//
SetMenu(CMenu::FromHandle(::LoadMenu( ::AfxGetApp()->m_hInstance ,MAKEINTRESOURCE( IDR_MDITYPE))));
//
MDIGetActive()->ModifyStyle( 0, WS_CHILD | WS_VISIBLE | WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU
| FWS_ADDTOTITLE /*| WS_THICKFRAME*/ | WS_MINIMIZEBOX | WS_MAXIMIZEBOX /*| WS_MAXIMIZE*/);
MDIGetActive()->ShowWindow(SW_SHOWNORMAL);//
ShowWindow(SW_SHOWNORMAL);//
}
3.
이어서 하위 창의 ChildFrame.cpp에서 창 속성을 설정하려면:
OOL CChild Frame::PreCreate Window(CREATESTRUCT & cs) {//TODO: 여기서 CREATESTRUCT cs를 수정하여 창 클래스나 스타일if(! CMDIChildWnd::PreCreate Window(cs) return FALSE를 수정합니다.
//전체 화면에 WS가 있어서는 안 된다는 점에 유의하라THICKFRAME cs.style = WS_CHILD | WS_VISIBLE | WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | FWS_ADDTOTITLE/*| WS_THICKFRAME*/| WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_MAXIMIZE;
return TRUE; }
4. 현재 전체 화면의 기능이 완성되었으니 호출만 하면 됩니다. MDIView에서 사용할 수 있습니다.cpp에서 키 호출(F1 전체 화면, F2 전체 화면 종료):
BOOL CMDIView: PreTranslateMessage(MSG* pMsg) {if(pMsg->wParam==VK F1)//전체 화면에 들어가기
(( CMainFrame*)::AfxGetMainWnd())->EnterFullScreen();//주 프레임워크의 함수 호출
return TRUE; } if(pMsg->wParam==VK F2)//전체 화면 종료
(( CMainFrame*)::AfxGetMainWnd())->QuitFullScreen();//주 프레임워크의 함수 호출
return TRUE; }
return CView::PreTranslateMessage( pMsg); }
5. 요약:
전체 화면 효과를 실현하려면 제목, 메뉴, 도구, 상태 표시줄 등을 숨기고 하위 창을 최대화하면 됩니다.본문에는 스크롤 바를 고려하지 않은 등 일부 결함이 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Pytest 테스트 프레임워크 기본 사용 방법 상세 정보pytest 소개 2. 매개 변수화를 지원하여 테스트할 테스트 용례를 세밀하게 제어할 수 있다. 3. 간단한 단원 테스트와 복잡한 기능 테스트를 지원할 수 있고selenium/appnium 등 자동화 테스트, 인터페...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.