안녕하세요. 명월입니다.
이번 포스팅에서는 SDI를 이용하여 마치 다이알 로그 폼뷰 효과(?)를 내는 방법에 대해 알아보도록 하겠습니다.
보통 MFC로 작업을 하게 되면 SDI, MDI, Dialog 중 하나를 선택하게 되겠습니다.
SDI로 개발 해 본 분들은 하시겠지만 Frame을 형성해서 개발하는 것이 Dialog 위에 붙히는 것보다 훨신 간단하고 쉽다는 걸 아실 겁니다. 그런데 SDI로 생성하면 Doc, View 도 설정해야 하기 때문에 번거롭습니다.
그렇다면 우리가 원하는 SDI위에 Doc, View를 떼어 내고 Formview 객체를 그위에 띄운다면
Dialog 에 메뉴 스테이스바가 갖추어진 기본 프로젝트가 생성되겠습니다.
그럼 그 방법에 대해 알아보도록 하겠습니다..
먼저 프로젝트를 SDI로 생성하겠습니다.
위 사진을 확인해 보면 Doc 파일과 View 해더 파일이 있는 걸 확인 하실 수 있습니다.
그럼 그 두 파일을 삭제 해보도록 하겠습니다
메인 소스에 들어가 해더 선언부분을 삭제하도록 하겠습니다.
그리고 초기화 부분에 SDI로 선언되는 부분을 삭제 하고 아래와 같으 프레임을 띄우겠습니다
CMainFrame* pMainFrame = new CMainFrame();
m_pMainWnd = pMainFrame;
pMainFrame->LoadFrame(IDR_MAINFRAME);
결과 화면입니다.
보시는 건 하얀색 바탕이지만 아무것도 없는 프레임 형태 입니다.
이제 저기에 Formview를 탑재하겠습니다.
클래스 를 생성하였으면 Frame의 onCreate 이벤트 안에 아래와 같은 소스를 추가 하겠습니다.
CMFCToolBar::SetBasicCommands(lstBasicCommands);
CCreateContext ccx;
ccx.m_pNewViewClass = RUNTIME_CLASS(MainView);
m_pMainView = DYNAMIC_DOWNCAST(MainView,CreateView(&ccx));
m_pMainView->ShowWindow(SW_SHOW);
m_pMainView->OnInitialUpdate();
SetActiveView(m_pMainView);
m_pMainView->ResizeParentToFit(FALSE);
결과 화면 입니다.
관련 소스입니다.
'Study > C , C++ , MFC' 카테고리의 다른 글
[C++] 제어문 (0) | 2020.03.12 |
---|---|
[C++] 연산자 (0) | 2020.03.11 |
[C++] 변수와 상수, 그리고 데이터 타입 (0) | 2020.03.10 |
[C++] CMake의 사용법 (0) | 2020.03.10 |
[C++] Make와 Makefile 작성법 (0) | 2020.03.09 |
[C++] Visual Studio 설치와 Linux의 g++ 설치 (0) | 2020.03.06 |
[C API] 환경파일(INI) 읽고 쓰기 (0) | 2013.03.02 |
[MFC] CSplitterWnd에서 일반 객체로 로드하기 (0) | 2013.02.22 |