-
[MFC] Visual Studio 2022 새 솔루션 만들기 SDI, 메뉴바 제거, 도구바 제거, 창 속성 변경정보공유/공부 2023. 12. 5. 10:25
2022 Visual Studio에서는 stdafx -> pch로 이름이 변경되었다고 합니다.
(Visual Studio 2017 및 이전 버전에서는 파일이 호출 stdafx.h되었습니다.) 라고 마이크로 소프트에서는 알려줍니다.
window 2015버전을 쓰고있었는데 2022로 넘어와서 새 프로젝트를 만들려고하니까 헷갈린 점들 정리해 보려고 합니다.
MFC앱 템플릿으로 시작 한 뒤 문서템플릿속성 ~ 고급기능까지는 쓰지 않기 때문에 체크만 해제하고 넘어갔습니다.
visual studio 설정 창 후에 실행을 하게 되면 이렇게 못생긴 창이 나오게 되는데
초기 모습 없애는 방법은 MainFrame.cpp파일 안에 OnCreate 함수안에 코드를
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) { TRACE0("도구 모음을 만들지 못했습니다.\n"); return -1; // 만들지 못했습니다. } // TODO: 도구 모음을 도킹할 수 없게 하려면 이 세 줄을 삭제하십시오. m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndToolBar); return 0; }
이렇게 주석처리 하면
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; // if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || // !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) // { // TRACE0("도구 모음을 만들지 못했습니다.\n"); // return -1; // 만들지 못했습니다. // } // // // TODO: 도구 모음을 도킹할 수 없게 하려면 이 세 줄을 삭제하십시오. // m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); // EnableDocking(CBRS_ALIGN_ANY); // DockControlBar(&m_wndToolBar); return 0; }
도구툴이 삭제 변경하게 됩니다.
도구툴 없어짐 메뉴바를 삭제하는 코드는 아래와 같다. 기존 sttyle 주석 후 'cs.hMenu = NULL;' 추가
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if( !CFrameWnd::PreCreateWindow(cs) ) return FALSE; // TODO: CREATESTRUCT cs를 수정하여 여기에서 // Window 클래스 또는 스타일을 수정합니다. cs.style = WS_OVERLAPPED | WS_CAPTION | FWS_ADDTOTITLE; cs.hMenu = NULL; return TRUE; }
메뉴 제거 창에 대한 속성을 변경하려면 PreCreateWindow() 함수에서 cs.style 속성값을 변경해 주면 된다. 마이크로 소프트 링크에 다양한 속성이 있으니 참고하면 좋음
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if( !CFrameWnd::PreCreateWindow(cs) ) return FALSE; // TODO: CREATESTRUCT cs를 수정하여 여기에서 // Window 클래스 또는 스타일을 수정합니다. cs.style = WS_BORDER; cs.hMenu = NULL; return TRUE; }
https://learn.microsoft.com/ko-kr/cpp/mfc/reference/styles-used-by-mfc?view=msvc-170#window-styles
MFC에서 사용하는 스타일
자세한 정보: MFC에서 사용하는 스타일
learn.microsoft.com
속성을 cs.style = WS_BORDER;만 주었을 때 창이 이렇게 변한다.
속성 변경 '정보공유 > 공부' 카테고리의 다른 글
[MFC] PC <-> PC 소켓 통신 TCP/IP / 이더넷 연결 / 무선 연결 / IP 통신 / JSON / rapid JSON (0) 2024.01.02 [MFC] C++에서 JSON 다루기 / rapid JSON / JSON / 예외처리 (1) 2023.12.27 [MFC] 상단바 없애기 (0) 2023.12.18 [MFC] 조명 컨트롤러 연결 (Modbus 형식) + RS485 케이블을 이용한 컨트롤 (0) 2023.12.13 mfc - web 통신 (0) 2023.05.16